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?

Était-ce utile?

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

}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top