Comment puis-je obtenir l'événement clic d'un accordéon ajax? asp.net
Question
J'ai un accordéon ajax et chaque volet contient un updatepanel (créé dynamiquement). Je souhaite que les updatepanels s'actualisent lorsque l'utilisateur clique sur l'en-tête du volet, mais il n'y a pas d'événement click.
Je peux insérer un bouton dans l'en-tête et l'enregistrer en tant que déclencheur asynchrone à l'aide du gestionnaire de scripts, mais je ne veux pas d'un bouton, je veux que tout l'en-tête soit un déclencheur.
Je ne vois pas le moyen de définir une div ou une étiquette comme déclencheur car ils n'ont pas d'événement de clic côté serveur. Y a-t-il un autre moyen de le faire?
La solution
Utilisez jQuery.
La syntaxe serait aussi simple que celle-ci:
$('#myHeading').click(function(){
// Your code here
});
Parfois, avec ASP.NET, je devais utiliser une correspondance d'identifiant générique car ASP.NET créait de très longs identifiants clientside semi-aléatoires pour vos éléments. Vous feriez quelque chose comme ce qui suit:
$('[id*="myHeading"]').click(function(){
// Your code here
});
En gros, vous pouvez sélectionner n’importe quoi sur le DOM et y attacher un gestionnaire d’événements avec jQuery. Il faut parfois faire preuve de créativité avec les sélecteurs.
IMPORTANT: Si vous utilisez updatepanels et que l'en-tête que vous souhaitez surveiller se trouve à l'intérieur de ce panneau, vous devrez REBINDRE ces gestionnaires d'événements à l'élément que vous sélectionnez après le chargement / rechargement du panneau via ajax. . Ceci peut être réalisé en utilisant le code suivant:
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
});
}