quiero mostrar un cuadro de diálogo de la interfaz de usuario jQuery de Codebehind y necesito actualizarlo después de las devoluciones.jQuery Dialog-Postback pero UpdatePanel no se actualiza
El cuadro de diálogo es un control para filtrar y buscar datos. Entonces, el usuario selecciona desde DropDownLists e ingresa texto en TextBoxes, hace clic en "Apply-Button", se produce una devolución de datos asincrónica, los datos se filtran de acuerdo con la selección del usuario y el resultado se muestra en un GridView. Por lo tanto, necesito actualizar UpdatePanel alrededor de GridView.
La devolución de datos asincrónica funciona con la ayuda de estos enlaces:
- jQuery UI Dialog with ASP.NET button postback
- http://blog.roonga.com.au/2009/07/using-jquery-ui-dialog-with-aspnet-and.html
(Básicamente, el dlg.parent().appendTo(jQuery("form:first"));
-Solución)
Problema: No puedo actualizar el UpdatePanel ni con UpdateMode = "Always" ni manual desde codebehind a través de UpdatePanel.Update(). Supongo que tiene algo que ver con el diálogo que no está dentro del UpdatePanel o algo similar. Espero que alguien pueda ayudarme.
Algunos fuente:
function createChargeFilterDialog() {
//setup dialog
$('#Dialog_ChargeFilter').dialog({
modal: true,
resizable: false,
autoOpen: false,
draggable: true,
hide: "Drop",
width: 850,
height: 600,
position: "center",
title: "Charge-Filter",
buttons: {
"Close": function() {
$(this).dialog("close");
}
},
open: function (type, data) {
$(this).parent().appendTo(jQuery("form:first"))
},
close: function (type, data) {
}
});
}
Se pone llamó desde código subyacente cuando BtnShowDialog (fuera del jQuery-Dialog) se hace clic a través de
AjaxControlToolkit.ToolkitScriptManager.RegisterStartupScript _
(Me.Page, GetType(Page), "showChargeFilterDialog", "createChargeFilterDialog();$('#Dialog_ChargeFilter').dialog('open');", True)
actualización: También he notado un problema en los valores de devolución de datos. Todos los cuadros de texto si están vacíos o no tienen una coma adjunta. Esto indica que los controles se procesan varias veces de acuerdo con: http://www.componentart.com/community/forums/t/60999.aspx
Estoy seguro de que ambos problemas están relacionados. El diálogo completo con todos sus controles se recreará en cada devolución de datos asincrónica, por lo tanto, todos los nombres de control existen varias veces en el DOM (lo que causa el problema de adición de coma de ViewState). Los controles solo son visibles en FireBug/IE Deveoper Toolbar y no en HTML-Source, por lo tanto, supongo que jQuery causa estos problemas. ¿Cómo puedo disponer de el cuadro de diálogo o cómo puedo evitar la recreación (compruebe si ya existe) del cuadro de diálogo? ¿Esto es porque el diálogo está dentro de un Panel de actualización o porque se mueve (a través de Javascript) fuera de UpdatePanel?
Destruyendo el diálogo antes de la devolución de datos asincrónica no resuelve el problema porque el diálogo desaparecerá simplemente:
<asp:Button ID="BtnApplyFilter" OnClientClick="$('#Dialog_ChargeFilter').dialog('destroy');" ... />
Su ayuda es muy apreciada.
Solución: i terminó con el uso de la ModalPopupExtender del AjaxControlToolkit. Después de algunos pequeños problemas funciona como un encanto con devoluciones de datos asincrónicas (no olvides llamar al MPE.Show()
en cada función de código subyacente si quieres que la ventana emergente permanezca visible). Podría agregar más código si alguien está interesado.
Hola Tim. Tengo el mismo problema. Me pregunto si eventualmente encontraste una solución potencial para esto. Implementé el diálogo jquery en toda la aplicación, pero necesito hacer un enlace entre 2 listas desplegables en 1 de estos diálogos. Por lo tanto, cambiaría a ModalPopUpExtender como una opción final. Por favor, eche un vistazo a mi pregunta: http://stackoverflow.com/questions/8082921/dropdownlist-selected-index-changed-event-inside-jquery-dialog. Saludos, – aleafonso