utilización usuario poner para net llamar hacer estilos ejemplos controles control como codigo asp asp.net vb.net asp.net-ajax updatepanel

asp.net - usuario - ¿Por qué es necesario hacer clic dos veces en un botón de control?



utilización de estilos en asp net css (8)

Tengo una aplicación web que funciona con VB y Ajax. Estoy usando los paneles de actualización para evitar el irritante "parpadeo" en las devoluciones de datos al servidor.

Me gustaría tener un control de botón definido dentro del propio panel de actualización (intenté moverlo al exterior y obtuve algún error catastrófico, por lo que lo dejé allí) que hace que el panel actual no sea visible y que un panel hermano esté visible. Esto funciona con la excepción de que se debe hacer clic dos veces en el botón. No se hizo doble clic, pero se hizo clic una vez que se volvió a hacer clic.

Al establecer puntos de interrupción, descubrí que el código que está conectado al botón se está ejecutando en el primer clic, pero los paneles no cambian como se esperaba. Si hago clic en el mismo botón O peor aún, en un botón diferente, aparece el comportamiento esperado del segundo panel. Sin embargo, con el segundo botón al que se hace clic hay una bonificación no deseada de que se visualice un tercer panel, y el tercer panel se hace visible debido al clic en el segundo botón.

Supongo que este comportamiento se debe al panel de actualización y su naturaleza de Ajax. ¿Hay alguna manera de evitar el segundo clic? ¿Estoy haciendo mal uso del panel de actualización? Realmente quería usar un menú emergente modal (directamente del AjaxToolKit) pero tuve problemas para publicar los datos, así que opté por este enfoque. Cualquier idea, asistencia e incluso crítica sería bienvenida, ya que esto me ha plagado el tiempo suficiente. Gracias


Me he encontrado con esto antes y lo resolví, simplemente no recuerdo cómo. Trataré de encontrar mi código anterior y contactarte. un pensamiento, ¿tiene habilitado EnablePartialRendering en su scriptmanager? tal vez intente envolver ambos contenedores en un tercer panel.


Si se deshace de los UpdatePanels, ¿las cosas funcionan como se espera con PostBacks? Las posibilidades son algo en su Page_Load u otro evento más arriba de la cadena están "restableciendo" las cosas de alguna manera antes de que llegue a su evento de clic. ¿Podría este ser el caso?


Su panel de actualización se encuentra dentro de los otros paneles.

¿Debería ser al revés? Los controles AFAIK únicos dentro del panel de actualización se actualizarán a través de la llamada AJAX.


Creo que su problema es que solo el panel de actualización está recibiendo datos del servidor después de que se ejecuta el método. El panel que está intentando cambiar está fuera del panel de actualización, por lo que no sabe que sus propiedades han cambiado.

O necesita hacer una devolución de datos de página completa o tener el panel que desea modificar dentro del panel de actualización.


Aquí hay una solución bastante simple. (Estaba teniendo el mismo problema esta mañana).

El UpdatePanel no puede representar cosas fuera de sí mismo. Entonces, como habrás notado, las actualizaciones están sucediendo, pero no estás viendo el resultado.

La solución más fácil es forzar una devolución de datos completa. Puedes hacer eso así:

protected override void OnInit(EventArgs e) { var scriptManager = ScriptManager.GetCurrent(this); // or this.Page in a UserControl, etc. scriptManager.RegisterPostBackControl(someButton); scriptManager.RegisterPostBackControl(someOtherButton); // etc. for each control that needs to update something outside the UpdatePanel }

Esto aún permite que los botones mismos sean actualizados en el Panel de actualización por Ajax (por ejemplo, cambiando su estado a deshabilitado o habilitado). El postback completo solo ocurre si se hace clic en los botones.


Al igual que otros, un panel de actualización solo actualiza sus contenidos, ese es uno de los principales beneficios de su uso.

Panel2 y pnlPrvCmt deben estar dentro de su panel de actualización para que su método de clic de botón funcione. Otra opción sería colocar Panel2 dentro de un panel de actualización y pnlPrvCmt dentro de un segundo panel de actualización. Luego, cualquier control dentro de cualquiera de los paneles de actualización hará que ambos se actualicen, siempre que UpdateMode = Always (que es por defecto).


Intente darle una identificación al control dinámico cuando se cree.
Por alguna razón, esto es requerido por .net para que un control dinámico funcione en este contexto.

myControl.id="newID"


He encontrado que esto ocurre en 2 escenarios diferentes:

  1. Sin ID establecido en el control. O la ID se deja fuera de la marca o la ID no se estableció cuando se creó un control dinámico. ASP.Net usa la ID para rastrear acciones.

  2. Paneles de actualización anidados. Scenerio: cuando utiliza una página maestra, puede tener un marcador de posición de contenido que ajuste en un panel de actualización para que no se necesite un panel de actualización en el contenido de la página. Luego, al desarrollar su página, puede agregar un UpdatePanel como un hábito.