Pregunta

Tengo un acordeón ajax, y cada panel contiene un panel de actualización (creado dinámicamente). Quiero que los paneles de actualización se actualicen cuando se hace clic en el encabezado del panel, pero no hay ningún evento de clic.

Puedo colocar un botón en el encabezado y registrarlo como un activador asíncrono con el administrador de scripts, pero no quiero un botón, quiero que todo el encabezado sea un activador.

No puedo ver una manera de establecer un div o una etiqueta como activador ya que no tienen un evento de clic en el lado del servidor. ¿Hay alguna otra forma de hacerlo?

¿Fue útil?

Solución

Usa jQuery.

La sintaxis sería tan fácil como la siguiente:

$('#myHeading').click(function(){
    // Your code here
});

A veces, con ASP.NET he tenido que usar una coincidencia de ID de comodín porque ASP.NET crea realmente IDs semi-aleatorias realmente largas para sus elementos. Harías algo como lo siguiente:

$('[id*="myHeading"]').click(function(){
    // Your code here
});

Esencialmente puede seleccionar cualquier cosa en el DOM y adjuntarle un controlador de eventos con jQuery. A veces tienes que ser creativo con los selectores.

IMPORTANTE: si está utilizando los paneles de actualización y el encabezado que desea monitorear para un clic está dentro de ese panel, deberá REEMPLAZAR los controladores de eventos al elemento que está seleccionando después de que se cargue / vuelva a cargar el panel a través de ajax . Esto se puede lograr usando el siguiente código:

var prm = Sys.WebForms.PageRequestManager.getInstance();

prm.add_pageLoaded(panelLoaded);

function panelLoaded(sender, args){

    $('[id*="myHeading"]').click(function(){
        // Do something after there is a click
    });

}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top