ASP.NET 2.0 : Création de contrôles serveurs Présenté par Pierre Lagarde [email protected]...

15
ASP .NET 2.0 : Création de contrôles serveurs Présenté par Pierre Lagarde [email protected] Relation Développeurs Microsoft France Level 300

Transcript of ASP.NET 2.0 : Création de contrôles serveurs Présenté par Pierre Lagarde [email protected]...

Page 1: ASP.NET 2.0 : Création de contrôles serveurs Présenté par Pierre Lagarde pierlag@microsoft.com Relation Développeurs Microsoft France Level 300.

ASP .NET 2.0 : Création de contrôles serveursASP .NET 2.0 : Création de contrôles serveurs

Présenté par Pierre Lagarde

[email protected] Développeurs

Microsoft France

Level 300Level 300

Page 2: ASP.NET 2.0 : Création de contrôles serveurs Présenté par Pierre Lagarde pierlag@microsoft.com Relation Développeurs Microsoft France Level 300.

Deux visions de l’approche composantDeux visions de l’approche composant

L’approche Contrôle Utilisateur (UserControl)L’approche Contrôle Utilisateur (UserControl)Créer une pagelet réutilisable (*.ascx) dans le Créer une pagelet réutilisable (*.ascx) dans le designer graphiquedesigner graphique

Facile à développerFacile à développer

Pas multi-projetPas multi-projet

L’approche Contrôle Server (CustomControl)L’approche Contrôle Server (CustomControl)Créer un composant .NET Web réutilisable depuis Créer un composant .NET Web réutilisable depuis la toolboxla toolbox

Modèle compilé dans une dllModèle compilé dans une dll Multi-projetMulti-projet

Pas facile à développerPas facile à développer

Page 3: ASP.NET 2.0 : Création de contrôles serveurs Présenté par Pierre Lagarde pierlag@microsoft.com Relation Développeurs Microsoft France Level 300.

Identifié par un tag dans le flux aspxIdentifié par un tag dans le flux aspx<asp:button …><asp:button …>

Les contrôles serveurs peuvent :Les contrôles serveurs peuvent :Générer un flux HTML vers le client dans la Générer un flux HTML vers le client dans la méthode Renderméthode Render

writer.RenderBeginTag(HtmlTextWriterTag.Span);writer.RenderBeginTag(HtmlTextWriterTag.Span);

Générer du script client (cas des contrôles Générer du script client (cas des contrôles Validators)Validators)

RegisterClientScriptBlockRegisterClientScriptBlock

Adapter leur rendu aux différents clientsAdapter leur rendu aux différents clientsMobile / IE / FirefoxMobile / IE / Firefox

L’approche Contrôle Server L’approche Contrôle Server

Page 4: ASP.NET 2.0 : Création de contrôles serveurs Présenté par Pierre Lagarde pierlag@microsoft.com Relation Développeurs Microsoft France Level 300.

La nouvelle Architecture des ContrôlesLa nouvelle Architecture des Contrôles

BaseDataBoundControl

DataBoundControl HierarchicalDataBoundControl

TreeView

Menu

ListControl CompositeDataBoundControl

BulletedList

CheckBoxList

DropDownList

ListBox

RadioButtonList

DetailsView

FormView

GridView

WebControl (1.x)

BaseDataList (1.x)

Control (1.x)

Page 5: ASP.NET 2.0 : Création de contrôles serveurs Présenté par Pierre Lagarde pierlag@microsoft.com Relation Développeurs Microsoft France Level 300.

2 : Mon premier contrôle serveur2 : Mon premier contrôle serveur

demodemo

<span style="font-size:XX-[Large / Small]">Test Phrase

</span>

Page 6: ASP.NET 2.0 : Création de contrôles serveurs Présenté par Pierre Lagarde pierlag@microsoft.com Relation Développeurs Microsoft France Level 300.

Sauvegarde des propriétésSauvegarde des propriétésLe contrôle serveur est créé à chaque génération de Le contrôle serveur est créé à chaque génération de page il faut donc implémenter un mécanisme de page il faut donc implémenter un mécanisme de sauvegarde des donnéessauvegarde des données

Utilisation du ViewStateUtilisation du ViewState

public bool LargeText{ get {

object o = ViewState["LargeText"];if (o == null)

return _largeText;else

return (bool)o; } set { _largeText = value; ViewState["LargeText"] = _largeText; }}

Page 7: ASP.NET 2.0 : Création de contrôles serveurs Présenté par Pierre Lagarde pierlag@microsoft.com Relation Développeurs Microsoft France Level 300.

Visibilité des propriétés dans l’inspecteur d’objetVisibilité des propriétés dans l’inspecteur d’objet

Utilisation des attributs sur les Utilisation des attributs sur les propriétéspropriétés

[Bindable(true), Category("Appearance"), DefaultValue("true")]public bool LargeText{ …}

[EditorBrowsable(EditorBrowsableState.Never), DefaultValue(false)]public override bool Visible{ …}

Page 8: ASP.NET 2.0 : Création de contrôles serveurs Présenté par Pierre Lagarde pierlag@microsoft.com Relation Développeurs Microsoft France Level 300.

3 : Modifier mon premier contrôle3 : Modifier mon premier contrôle

demodemo

Page 9: ASP.NET 2.0 : Création de contrôles serveurs Présenté par Pierre Lagarde pierlag@microsoft.com Relation Développeurs Microsoft France Level 300.

Contrôle invisibleContrôle invisible

Réaliser un contrôle visible par Visual Réaliser un contrôle visible par Visual Studio mais invisible dans la page Studio mais invisible dans la page HTMLHTML

Utilisation des « Utilisation des « ControlDesignerControlDesigner » »[DesignerAttribute(typeof(InvisibleControlControlDesigner))]public class InvisibleControl : Control{

…}public class InvisibleControlControlDesigner : ControlDesigner {

public override string GetDesignTimeHtml() {return base.CreatePlaceHolderDesignTimeHtml();}

}

Page 10: ASP.NET 2.0 : Création de contrôles serveurs Présenté par Pierre Lagarde pierlag@microsoft.com Relation Développeurs Microsoft France Level 300.

4 : Contrôle Invisible4 : Contrôle Invisible

demodemo

Page 11: ASP.NET 2.0 : Création de contrôles serveurs Présenté par Pierre Lagarde pierlag@microsoft.com Relation Développeurs Microsoft France Level 300.

Ajout de fonctionnalités à un contrôle existantAjout de fonctionnalités à un contrôle existant

Créer un DropDownList multicoloreCréer un DropDownList multicolore

<html> <body> <select> <option style="color:red;font-weight:700;font-family:courier new;">One</option> <option>Two</option> <option>Three</option> </select> </body></html>

Page 12: ASP.NET 2.0 : Création de contrôles serveurs Présenté par Pierre Lagarde pierlag@microsoft.com Relation Développeurs Microsoft France Level 300.

Hériter du DropDownListHériter du DropDownList

Ajout de propriétésAjout de propriétés

Réécrire le RenderContentsRéécrire le RenderContents

Page 13: ASP.NET 2.0 : Création de contrôles serveurs Présenté par Pierre Lagarde pierlag@microsoft.com Relation Développeurs Microsoft France Level 300.

Customiser le SmartTag pour la nouvelle DropDownListCustomiser le SmartTag pour la nouvelle DropDownList

Créer un nouveau ControlDesignCréer un nouveau ControlDesignpublic override DesignerActionListCollection ActionLists{

//Return DesignerActionListCollection()}

Page 14: ASP.NET 2.0 : Création de contrôles serveurs Présenté par Pierre Lagarde pierlag@microsoft.com Relation Développeurs Microsoft France Level 300.

5 : MyDropDownListMyDropDownListControlDesign

5 : MyDropDownListMyDropDownListControlDesign

demodemo

Page 15: ASP.NET 2.0 : Création de contrôles serveurs Présenté par Pierre Lagarde pierlag@microsoft.com Relation Développeurs Microsoft France Level 300.