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