Come posso ottenere l'evento click di una fisarmonica ajax? asp.net
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?
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
});
}