Magazine High tech

Ajouter le "ScriptManager" depuis le code C# d'une WebPart

Publié le 26 février 2009 par Blogtech

Le ScriptManager est un contrôle indispensable pour faire des sites supportant Ajax. Son rôle principal est de charger des fichiers Javascript. Il doit être présent sur toutes les pages utilisant des contrôles Asp.Net Ajax.

Dans le cas des sites sharepoints supportant des webparts en Ajax, j'avais l'habitude d'ajouter le ScriptManager à la master page.

<form id="form1" runat="server">

    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
....    
</form>

Le problème est que si vous développez une WebPart utilisant Ajax, il faut que la master page ait le ScriptManager pour fonctionner correctement. Chose que je ne peux pas garantir lorsque je livre une webpart.

Comme c'est la Webpart qui a besoin du script Manager, c'est elle qui doit avoir la responsabilité d'ajouter le ScriptManager sur la page.

Voici comment le faire simplement en C# :

protected override void OnInit(EventArgs e)
{
    if (Page != null & ScriptManager.GetCurrent(Page) == null)
    {
        Page.Form.Controls.AddAt(0, new ScriptManager());
    }

    base.OnInit(e);
}

Les éléments importants dans ce bout de code sont :

  • La surcharge de "OnInit", qui nous assure d'exécuter le code au bon moment dans le cycle de vie du contrôle.
  • La vérification de la présence sur "ScriptManager" pour éviter de l'ajouter s'il est déja présent sur la page.
  • L'ajout du script manager comme premier contrôle pour "Page.Form.Controls" (et non Page.Controls)

Retour à La Une de Logo Paperblog

A propos de l’auteur


Blogtech 3 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte