Sébastien Pertus
Développement d'un Extender Ajax
L'optique de cet article est de prendre connaissance du framework ASP Ajax Extensions 1.0 ainsi que celui fourni par l'ATLAS Toolkit afin de voir les possibilités de customisation de contrôles qui vous sont alors offertes.
Par Sébastien Pertus publié le 02/04/2007 à 10:19, lu 4907 fois, 10 pages
 7 | Code de notre Extender, côté serveur
Attaquons par le plus simple : le code C# de la class ReadWriteTextBoxExtenderSi on regarde de prés cette class, on peut noter plusieurs choses intéressantes :Tout d'abord, référencement du fichier JavaScript embarquée dans l'assemblie.

[assembly: System.Web.UI.WebResource("ReadWriteTextBox.ReadWriteTextBoxBehavior.js", "text/javascript")]

Cette instruction va permettre à notre assemblie de générer et référencer le fichier JavaScript dans votre page de rendu aspx. Inutile donc de vous soucier si elle sera bien présente, elle le sera.
De même, l'attribut ClientScriptResource indique que votre Extender s'appuiera sur ce code JavaScript pour étendre le comportement du contrôle auquel il est attaché.

[ClientScriptResource("ReadWriteTextBox.ReadWriteTextBoxBehavior", "ReadWriteTextBox.ReadWriteTextBoxBehavior.js")]

Le principe même d'un Extender est d'étendre le comportement d'un contrôle. Dans notre cas, il est nécessaire de lui spécifier que nous ne voulons étendre que le comportement d'un TextBox. On peut donc changer l'attribut

[TargetControlType(typeof(Control))]

En

[TargetControlType(typeof(TextBox))]

Notre Extender ne pourra donc être associé qu'à un TextBox.

Le template du contrôle a crée pour nous une première propriété appelée MyProperty (l'imagination est débordante !)Ce qui est important là, c'est un attribut en particulier affectée à la propriété : ExtenderProperty

[ExtenderControlProperty]

[DefaultValue("")]

public string MyProperty

A quoi sert cet attribut ? Et bien, et c'est là qu'on commence à sentir la puissance du modèle, cet attribut affecté à une propriété va permettre, lors du rendu du contrôle de transférer la valeur de cette propriété à votre Script Client (ReadWriteTextBoxExtender.js) et l'affecter à une propriété JavaScript (Nous verrons plus tard où et comment).
Ce qui veut dire que vous allez pouvoir coté serveur, travailler vos propriétés en code managé et les récupérer coté JavaScript pour continuer à les faire évoluer coté client !
Par contre cette possibilité n'est pas permise dans l'autre sens. Nous n'allons pas pouvoir pour le moment récupérer la valeur modifiée depuis le JavaScript lors d'un PostBack. Il faudra pour cela utiliser une propriété de votre Extender, appellé le ClientState, nous y reviendrons plus tard.
L'intérêt ici c'est bien de pouvoir faire évoluer cette propriété quelque soit le mode où nous nous trouvons : Coté serveur ou Coté client. Et bien sûr pouvoir récupérer la valeur de cette propriété, modifiée dans les deux sens.
Pour notre exemple, nous allons créer une simple propriété de type Booléen. Là où nous devons être vigilant c'est de bien veiller à créer une propriété qui puisse évoluer quelque soit le mode où nous nous trouvons.
Pour l'exemple, nous allons développer une propriété qui va remplir les règles suivantes :
  1. Lors du double clic dans la zone Texte, le comportement du contrôle (c'est-à-dire disparaître et laisser place à un DIV) devra être annulé.
  2. Lors d'un PostBack, être capable de récupérer cette valeur et la modifier si nécessaire.
Implémentons donc la propriété DisableOnDblClick

[ExtenderControlProperty]

[DefaultValue(true)]

public Boolean DisableOnDblClick

{

    get

    {

        return GetPropertyValue("DisableOnDblClick ", true);

    }

    set

    {

        SetPropertyValue("DisableOnDblClick ", value);

    }

}

Vous avez sans doute remarqué l'appel à deux fonctions pour l'affectation et la récupération de notre Accesseur : GetPropertyValue et SetPropertyValue.Ces deux fonctions sont propres à l'ATLAS Toolkit et ne font que placer et récupérer votre valeur depuis le ViewState.

D'où ai-je pioché cette information ? Eh bien des sources de l'ATLAS Toolkit que vous avez à votre disposition depuis son installation sur votre machine. N'hésitez pas à explorer les sources de la Toolkit et récupérer des exemples de codes. C'est une ressource inépuisable et surtout indispensable.Nous avons terminé coté Serveur, il nous reste à nous attaquer à la partie la plus plaisante de toutes, le code JavaScript ! 
 
» Démarrer une discussion