Comment appeler une fonction javascript côté client après qu'un UpdatePanel spécifique a été chargé

Comment est-il possible d'appeler une méthode javascript côté client après qu'un panneau de mise à jour spécifique a été chargé?

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler) ne fonctionne pas pour moi car cela va déclencher après que tout panneau de mise à jour finit de charger et je ne trouve aucun moyen côté client de trouver quel est celui

ScriptManager.GetCurrent(Page).AsyncPostBackSourceElementID AsyncPostBackSourceElementID ne fonctionne pas pour moi car il s'agit d'un objet côté serveur, et je veux un côté client

Le framework ClientSide .Net doit savoir quel UpdatePanel il met à jour afin de mettre à jour le contenu correct. Sûrement, il existe un moyen de se connecter à cet événement?

Toute aide serait appréciée.

Vous pouvez accrocher l'événement PageRequestManager.beginRequest et inspecter la propriété BeginRequestEventArgs.postBackElement .

Notez qu'il ne vous donne pas vraiment le UpdatePanel, mais le contrôle dans le UpdatePanel. Cela devrait cependant être suffisant.

Modifier: Encore mieux, l'événement PageRequestManager.pageLoaded vous donne les propriétés PageLoadedEventArgs.panelsUpdated (et panelsCreated ).

Merci – les deux bonnes réponses. Je suis allé avec le script côté client "pageloaded" à la fin. C'est une méthode assez enterrée que Google n'a pas révélé à moi. Pour ceux qui sont intéressés, ce code fonctionne avec FireBug pour donner une bonne démonstration de la méthode PageLoaded pour trouver les panneaux mis à jour:

 <script type="text/javascript"> $(document).ready(function() { panelsLoaded = 1; Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(PageLoaded) }); function PageLoaded(sender, args) { console.log("I have occured " + panelsLoaded++ + " times!"); var panelsCreated = args.get_panelsCreated(); for (var i = 0; i < panelsCreated.length; i++) { console.log("Panels Updating: " + panelsCreated[i].id); } var panelsUpdated = args.get_panelsUpdated(); for (var i = 0; i < panelsUpdated.length; i++) { console.log("Panels Updating: " + panelsUpdated[i].id); } } </script> 

C'est peut-être votre solution.

Dans le code derrière l'événement OnLoad UpdatePanel, enregistrez un script de démarrage.

 string scriptText = "alert('Bar!');"; ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "foo", scriptText, true);