AJAX ScriptManager dans UserControl
J'ai un UserControl qui contient un UpdatePanel qui enveloppe certains autres contrôles. Le contrôle UserControl sera utilisé sur certaines pages qui ont déjà une ScriptManager et d'autres pages qui n'ont pas de ScriptManager. J'aimerais le contrôle UserControl pour apporter automatiquement sa propre ScriptManager si l'un n'existe pas.
J'ai essayé ScriptManager.GetCurrent et si elle renvoie null-je créer mon propre ScriptManager et de l'insérer dans le Formulaire, mais je ne peux pas trouver un lieu assez tôt dans le UserControl du cycle de vie pour exécuter ce code. Je reçois le message d'erreur "Le contrôle avec l'ID 'uPnlContentList exige un ScriptManager sur la page. Le ScriptManager doit apparaître avant tout des contrôles qui en ont besoin." chaque fois que j'essaie de chargement de la page. Les endroits que j'ai essayé de lancer mon code sont OnInit, CreateChildControls et PageLoad et ils ne sont jamais appelé ainsi parce qu'il meurt avant de les atteindre.
Où dois-je mettre cette case?
OriginalL'auteur cjserio | 2009-03-16
Vous devez vous connecter pour publier un commentaire.
Je déteste aller dans une autre direction, mais êtes-vous à l'aide d'une page maître? Et si oui, avez-vous envisagé de placer un seul ScriptManager sur elle et être fait avec elle?
pourquoi est-ce la réponse?
OriginalL'auteur Daniel Henry
mettre un ScriptManager dans votre MasterPage que tous vos fichiers ASPX référence. Ensuite n'importe où ailleurs dans l'emplacement que vous avez besoin de travailler avec le ScriptManager utiliser un ScriptManagerProxy qui obtiendra le ScriptManager à partir de la page principale et vous permettent de travailler avec lui dans le contrôle de l'utilisateur et dans le code derrière.
Appelle maintenant ScriptManager.GetCurrent(Page) vous donne la référence d'un gestionnaire de script.
Voici un lien:
MSDN Info
ce serait ~/Scripts/myscript.js contient-il?
OriginalL'auteur Dean Poulin
Je pense que l'événement Init devrait fonctionner. Utiliser la technique que vous avez décrit (c'est à dire vérifier que ScriptManager.GetCurrent retourne null avant de l'ajouter), mais lorsque vous ajoutez le ScriptManager, assurez-vous que vous l'ajouter en tant que le premier contrôle à l'intérieur de la forme.
Je n'ai pas testé mais je pense qu'il va travailler.
OriginalL'auteur Rob Windsor
Ce qui a fonctionné pour moi a été, y compris cette ligne après < form >
Qui m'a autour de la "...nécessite une ScriptManager sur la page. Le ScriptManager doit apparaître avant tout des contrôles qui en ont besoin."
OriginalL'auteur Gaʀʀʏ
J'ai fait 2 choses qui fonctionne.
Sur le UserControl faire de ce Sujet:
Sur le caling site, appelez avant votre ScriptManagerCall
Si vous avez AutoPostback sur vous UserControl vous devez également définir le focus dans l'événement TextChanged.
Espère que cela fonctionne.
OriginalL'auteur JanBorup