J'ai un usercontrol qui peut être utilisé par exemple dans un gridview itemtemplate, cela signifie que le contrôle pourrait ou ne pourrait pas être sur la page au chargement de la page. Dans le cas où le contrôle est à l'intérieur d'un itemtemplate, je ferai un popup sur le gridview via des postbacks asynchrones (via des panneaux de mise à jour).ScriptManager duplique javascript
Le contrôle contrôle lui-même les scripts scriptblocks car il dépend des javascripts. Tout d'abord je l'ai utilisé
Page.ClientScript.RegistrerClientScriptBlock
Mais cela ne fonctionne pas sur les publications asynchrones (de UpdatePanels) donc je puis essayé la même chose en utilisant ScriptManager qui me permet de registrer des scripts sur la page après async postbacks. génial!.
ScriptManager.RegisterClientScriptBlock
Cependant, ScriptManager (ce que je sais) n'a pas le functionallity pour voir si un script est déjà sur la page, je vais donc pour chaque postback générer des doublons des blocs de script, ce comportement est ofcourse indésirable . J'ai fait une course chez Google et j'ai découvert que je pouvais appeler la méthode Dispose() du PageRequestManager, cela fonctionne parce qu'il efface les scripts et les ajoute à nouveau (ceci résout aussi mon problème avec la suppression des inutilisés blocs de script des contrôles supprimés).
Sys.WebForms.PageRequestManager.getInstance().Dispose()
Cependant, bien sûr, il y a un inconvénient depuis l'affichage ici :). La méthode Dispose() supprime également l'instance sur la page maître, ce qui entraîne l'arrêt des scripts qui s'exécutent après une publication asynchrone (updateprogress par exemple).
Alors, existe-t-il un moyen de vérifier si un script existe déjà sur la page en utilisant ScriptManager ou tout autre outil, ce qui m'empêchera d'insérer des scripts en double? Aussi, existe-t-il un moyen de supprimer certains blocs de script (lorsque je supprime un élément dans itemtemplate par exemple).
Merci d'avance.
Hmm, il semble effectivement que vous avez raison. Quand j'ai creusé dedans j'ai réellement réalisé que j'ai utilisé la page au lieu de la commande d'usager pour enregistrer le manuscrit qui était l'erreur numéro un. Erreur numéro deux est que j'ai inclus un add_endRequest dans mon script dont l'intention était de gérer les postbacks asynchrones, mais ce n'est pas nécessaire car il semble que ScripManager fait cela pour moi, d'où les appels en double. Merci pour la réponse si :) – Andreas