Domanda

Ho una fisarmonica ajax e ogni riquadro contiene un pannello di aggiornamento (creato dinamicamente). Voglio che i pannelli di aggiornamento si aggiornino quando si fa clic sull'intestazione del riquadro, ma non vi è alcun evento di clic.

Posso inserire un pulsante nell'intestazione e registrarlo come trigger asincrono usando lo scriptmanager, ma non voglio un pulsante, voglio che l'intera intestazione sia un trigger.

Non riesco a vedere un modo per impostare un div o un'etichetta come trigger in quanto non hanno un evento clic sul lato server. C'è un altro modo in cui posso farlo?

È stato utile?

Soluzione

Usa jQuery.

La sintassi sarebbe semplice come la seguente:

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

A volte con ASP.NET ho dovuto usare una corrispondenza ID jolly perché ASP.NET crea ID client semi-casuali molto lunghi per i tuoi elementi. Faresti qualcosa del tipo:

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

In sostanza puoi selezionare qualsiasi cosa sul DOM e collegarti un gestore di eventi con jQuery. A volte devi essere creativo con i selettori.

IMPORTANTE: se si utilizzano i pannelli di aggiornamento e l'intestazione che si desidera monitorare per un clic si trova all'interno di quel pannello, sarà necessario RIABILITARE quei gestori di eventi all'elemento che si sta selezionando dopo che il pannello è stato caricato / ricaricato tramite ajax . Ciò può essere ottenuto utilizzando il seguente codice:

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
    });

}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top