Je suis actuellement en train de configurer des fonctionnalités AJAX dans un environnement SharePoint pour prendre en charge les parties Web que je crée avec C#. J'utilise la procédure pas à pas de Microsoft comme point de départ juste pour démarrer et je cours dans ce que je crois être une erreur étrange. Le problème se produit dans CreateChildControls():Implémentation de SharePoint AJAX: ScriptHandler ajouté deux fois
protected override void CreateChildControls()
{
base.CreateChildControls();
//Fix for the UpdatePanel postback behaviour.
EnsurePanelFix();
LinkButton sayHello = new LinkButton();
UpdatePanel refreshName = new UpdatePanel();
ScriptManager scriptHandler = new ScriptManager();
displayName = new Label();
inputName = new TextBox();
//Set up control properties.
this.displayName.ID = "displayName";
this.displayName.Text = "Hello!";
this.inputName.ID = "inputName";
sayHello.ID = "sayHello";
sayHello.Text = "Say Hello";
scriptHandler.ID = "scriptHandler";
refreshName.ID = "refreshName";
refreshName.UpdateMode = UpdatePanelUpdateMode.Conditional;
refreshName.ChildrenAsTriggers = true;
//Add the EventHandler to the Button.
sayHello.Click += new EventHandler(ClickHandler);
//Add the user interface (UI) controls to the UpdatePanel.
refreshName.ContentTemplateContainer.Controls.Add(this.inputName);
refreshName.ContentTemplateContainer.Controls.Add(sayHello);
refreshName.ContentTemplateContainer.Controls.Add(this.displayName);
//The ScriptManager control must be added first.
this.Controls.Add(scriptHandler);
this.Controls.Add(refreshName);
}
Le problème que j'ai est que, pour une raison quelconque, CreateChildControls() doit être appelé deux fois. Quand je parcours le code, il exécute chaque ligne avec un problème, puis revient à la première ligne et répète. Quand il arrive à l'avant-dernière ligne où il ajoute le ScriptManager, il lance bien sûr une exception, car il essaie d'ajouter un second ScriptManager à la page avec une clé identique. Peut-être que c'est une erreur dans ma compréhension de la façon dont cette méthode devrait fonctionner, mais je ne comprends pas pourquoi elle est appelée deux fois (ou de manière récursive infiniment, pour autant que je sache, si cette exception n'a pas été lancée). Merci pour toute aide que quelqu'un peut me donner.
J'ai essayé SharePoint Designer, et je le fais comme ça. Malheureusement, pour cette partie Web en particulier, le faire dans VS sera plus rapide, à condition que cette fonctionnalité AJAX soit opérationnelle et fonctionne rapidement. Je vais essayer cela et voir ce qui se passe! –
Ça l'a fait! Merci de votre aide! Je repérerai d'où vient l'appel plus tard, mais pour l'instant, tout va bien. –