6/19/11

WEB PARTS ASP.net 2.00


1. Web Parts

1.1.         Introduction aux WebParts

On voit apparaître de plus en plus souvent sur des sites, des portails, un système de zone de fenêtrage tel que sur MyMSN, sur Google et Yahoo : ce sont les WebParts.
Les WebParts représentent une nouvelle organisation et conception d’un site WEB dont le principe se base sur un regroupement de contrôle dans des zones modifiables dont on peut contrôler l’aspect en reduisant la zone, en fermant la zone, en échangeant des contrôles d’une zone à un autre dynamiquement. Cette fonctionnalité se base ainsi sur des zones composés de WebPart (contrôle). Les utilisateurs peuvent contrôler l’affichage d’une page, en choisissant les contrôles à afficher, la position des contrôles, de changer l’apparence de ces contrôles, tout cela dynamiquement.
L’utilisation des WebParts est associée aux memberships et la personnalisation qui permet à l’utilisateur de contrôler tous les aspects des WebParts selon les autorisations appliquées.
webpart_intro1.png
Fig 3.1 MyMSN

1.2.         Les différentes zones de WebParts

Propriétés
Description
WebPartZone
Zone par défault et visible permettant l’insertion de WebPart, déplacer et déposer possible entre deux WebPartZone.
EditorZone
Zone d’édition pour interagir avec les WebPartZone, composé de WebParts Editor.
Zone invisible par défault
CatalogZone
Zone contenant les WebParts invisible par défault, des WebPart que l’utilisateur à fermer
Zone invisible par défault
ConnectionsZone
Zone permettant d’éditer les liens entre les WebParts.
Zone invisible par défault
Toutes ces zones sont contrôlés par un WebPartManager, unique par page.

1.3.         Création des WebParts

Les WebPart et WebPartZone sont contrôlés par le WebPartManager, il faut donc le déposer sur la page pour pouvoir utiliser les WebParts. Ensuite, il faudra placer des WebPartZones qui en général sont placés dans des tableaux HTML (ou div).
webpart_creation1.png
Fig 3.2 Exemple création des WebPartZone (mode design)
Il faut maintenant remplir les WebPartZone par des contrôles, par exemple déposer un Label, une TextBox, … .
Voici un exemple qui servira tout au long de l’article :
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:WebPartManager ID="WebPartManager1" runat="server">
        </asp:WebPartManager>
        <table style="width:400px; border: solid 1px black; vertical-align: middle; text-align:center"
                 border="1" cellpadding="0" cellspacing="0">
            <tr>
            <td style="width:200px">
                <asp:WebPartZone ID="Zone_3" runat="server">
                    <ZoneTemplate>
                        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>          
              </ZoneTemplate>
                </asp:WebPartZone>

            </td>
            <td style="width:200px">
                <asp:WebPartZone ID="Zone_3" runat="server">
                    <ZoneTemplate>
                        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
              </ZoneTemplate>
                </asp:WebPartZone>

            </td>
            </tr>
            <tr>
            <td style="width:200px">
                <asp:WebPartZone ID="Zone_3" runat="server">
                    <ZoneTemplate>
                        <asp:Button ID="Button1" runat="server" Text="Button" />                   
              </ZoneTemplate>
                </asp:WebPartZone>
            </td>
            <td style="width:200px">
                <asp:WebPartZone ID="Zone_4" runat="server">
                    <ZoneTemplate>
                        <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
                    </ZoneTemplate>
                </asp:WebPartZone>
            </td>
            </tr>
        </table>
        <br />
    </form>
</body>
</html>
webpart_creation2.png
Fig 3.3 Exemple de création de WebParts (mode design)
webpart_creation3.png
Fig 3.4 Exemple de création de WebParts (mode Browser)
Attention, vous devez obligatoirement être connectés (avec l’utilisation des Membership) pour voir les WebParts. Par défault, vous êtes dans le mode « Design » permettant seulement de réduire ou fermer les WebParts.

1.4.         Formatter des WebParts

Par défault, les WebParts n’ont aucun style d’où l’apparence pauvre. Pour cela, vous avez la possibilité d’appliquer des styles pré-définies :
webpart_format1.png
Fig 3.5 Formats proposés par défaut
L’autre manière consiste à appliquer un style définie par l’utilisateur même, grâce aux éléments de style d’une WebPartZone.
Propriétés
Description
PartChromeStyle
Style de la zone vide dans une WebPartZone
MenuLabelHoverStyle
Style du Label lorsque la souris survole le Label
EmptyZoneTextStyle
Style de la zone de texte vide
HeaderStyle
Style de l’en-tête
MenuVerbStyle
Style du menu d’un WebParts
PartStyle
Style des WebParts dans la zone
MenuLabelStyle
Style des Labels dans le menu
MenuPopupStyle
Style du menu en haut à droite
PartTitleStyle
Style de titre du WebParts
Voici un exemple de style pour les WebPartZone :
<asp:WebPartZone ID="Zone_2" runat="server" BorderColor="#CCCCCC" Font-Names="Verdana"
                    Padding="6">
                    <PartChromeStyle BackColor="#F7F6F3" BorderColor="#E2DED6" Font-Names="Verdana" ForeColor="White" />
                    <MenuLabelHoverStyle ForeColor="#E2DED6" />
                    <EmptyZoneTextStyle Font-Size="0.8em" />
                    <MenuLabelStyle ForeColor="White" />
                    <MenuVerbHoverStyle BackColor="#F7F6F3" BorderColor="#CCCCCC" BorderStyle="Solid"
                        BorderWidth="1px" ForeColor="#333333" />
                    <HeaderStyle Font-Size="0.7em" ForeColor="#CCCCCC" HorizontalAlign="Center" />
                    <MenuVerbStyle BorderColor="#5D7B9D" BorderStyle="Solid" BorderWidth="1px" ForeColor="White" />
                    <PartStyle Font-Size="0.8em" ForeColor="#333333" />
                    <TitleBarVerbStyle Font-Size="0.6em" Font-Underline="False" ForeColor="White" />
                    <MenuPopupStyle BackColor="#5D7B9D" BorderColor="#CCCCCC" BorderWidth="1px" Font-Names="Verdana"
                        Font-Size="0.6em" />
                    <PartTitleStyle BackColor="#5D7B9D" Font-Bold="True" Font-Size="0.8em" ForeColor="White" />
                    <ZoneTemplate>
                        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                    </ZoneTemplate>
</asp:WebPartZone>

1.5.         Changement de mode

Dans le mode par défaut « Browse Mode », vous avez seulement la possibilité de minimier la zone ou la fermer. Pour pouvoir éditer les WebParts, changer certaines propriétés, récuperer des WebParts, il faut changer de mode. Pour cela, il faudra implémenter des fonctions permettant le changement de mode. Nous allons prendre un exemple avec une DropDownList composé des 5 différents mode (Browse Mode, Design, Catalog Mode, Edit Mode, Connect Mode).
<asp:DropDownList ID="DisplayModeDropdown"
    runat="server" 
    AutoPostBack="true"
    EnableViewState="false"
    OnSelectedIndexChanged=
           "DisplayModeDropdown_SelectedIndexChanged" />

WebPartManager _webmanager; // on crée un objet WebPartManager

    void Page_Init(object sender, EventArgs e)
    {
        Page.InitComplete += new EventHandler(InitComplete);
    }

    protected void InitComplete(object sender, System.EventArgs e)
    {
        _webmanager = WebPartManager.GetCurrentWebPartManager(Page);

        String browseModeName = WebPartManager.BrowseDisplayMode.Name;

        // remplit la dropdownlist avec les modes disponibles
        foreach (WebPartDisplayMode mode in _manager.SupportedDisplayModes)
        {
            String modeName = mode.Name;
            // vérification de la validité d’un mode
            if (mode.IsEnabled(_webmanager))
            {
                ListItem item = new ListItem(modeName + " Mode", modeName);
                DisplayModeDropdown.Items.Add(item);
            }
        }

    }

    // Changement de page selon le mode sélectionné
    protected void DisplayModeDropdown_SelectedIndexChanged(object sender,
      EventArgs e)
    {
        String selectedMode = DisplayModeDropdown.SelectedValue;

        WebPartDisplayMode mode = _manager.SupportedDisplayModes[selectedMode];
        if (mode != null)
            _webmanager.DisplayMode = mode;

    }

    protected void Page_PreRender(object sender, EventArgs e)
    {
        DisplayModeDropdown.SelectedValue = _webmanager.DisplayMode.Name;
    }
- La fonction Page_Init permet d’initialiser les contrôles pendant le chargement de la page et fait appel à la fonction InitComplete.
- La fonction InitComplete récupère le WebPartManager de la page concernée, étant donné qu’il est unique il existe un et un seul WebPartManager. Il stock le WebPartManager dans l’objet _webmanager. Ensuite, une boucle permet de remplir la DropDownList des modes d’affichage selon leur disponibilité. Par exemple si un Catalog Zone est disponible, on affichera le mode « Catalog Mode » dans la DropDownList, dans le cas contraire il ne sera pas affiché.
- La fonction DisplayModeDropdown est appelée suite au changement d’index de la DropDownList et permet le changement de page selon le mode sélectionné.
 - La fonction Page_PreRender permet tout simplement de mettre à jour l’objet _webmanager en fonction du mode sélectionné dans la DropDownList.
Etant donné que ces différents modes ne sont pas visibles par défaut, et nécessitent une connection, il faudra rajouté le contrôle de Login pour permettre à l’utilisateur de se connecter et d’accéder ensuite aux différents modes.
Voici l’apparence des WebParts et mode disponible par défaut :
webpart_mode1.png
Fig 3.6 Mode par défaut avant connection
Apparence des WebParts et mode disponible après connexion :
webpart_mode2.png
Fig 3.7 Mode disponible après connexion

1.6.         CatalogZone

Un catalogue contient les WebParts qui ne sont pas utilisés ou qui ne doivent pas apparaître par défaut. Il contient aussi les WebParts que l’utilisateur à fermer. L’utilisateur connecté pourra ainsi construire sa page de WebParts grâce à un catalogue que l’administrateur aura remplit de WebPart auparavant. Qui dit catalogue, dit possibilité de choisir à plusieurs reprise le même WebPart et l’insérer dans une zone, par exemple si vous choisissez un Label du catalogue, vous aurez la possibilité de l’insérer autant de fois que vous le souhaitez, étant donné qu’il n’est pas unique. Un catalogue est donc essentiellement une collection de WebParts disponible, d’où le nom de « Catalog ».
Pour construire son catalogue, il faut tout d’abord insérer une zone catalogue dans lequel on pourra ajouter trois type d’éléments. Un catalogue de page (« Page Catalog ») qui sera composé des WebParts fermés par l’utilisateur, une déclaration de catalogue (« DeclarativeCatalogPart ») qui permet à l’administrateur de l’application WEB de remplir le catalogue de WebParts, et enfin un importateur de WebPart (« Import Catalog Part ») permettant à l’utilisateur d’importer des WebParts depuis sa machine.
Voici le code source d’un CatalogZone sans aucun style :
<asp:CatalogZone ID="CatalogZone1" runat="server">
            <ZoneTemplate>
                <asp:PageCatalogPart ID="PageCatalogPart1" runat="server" />
                <asp:DeclarativeCatalogPart ID="DeclarativeCatalogPart1" runat="server">
                    <WebPartsTemplate>
                        <asp:Label ID="Label3" runat="server" Text="Label"></asp:Label>
                        <br />
                        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
                    </WebPartsTemplate>
                </asp:DeclarativeCatalogPart>
                <asp:ImportCatalogPart ID="ImportCatalogPart1" runat="server" />
            </ZoneTemplate>
</asp:CatalogZone>
Le PageCatalogPart et ImportCatalogPart ne sont pas éditables, il suffit tout simplement de les déposer dans le CatalogZone. Pour ce qui est de la DeclarativeCatalogPart, il faut éditer le template pour pouvoir insérer des WebParts pour construire le catalogue.
webpart_catalog1.png
Fig 3.8 CatalogZone
Le PageCatalog ci-dessous contient quatre WebParts fermés par l’utilisateur. Pour récupérer ces WebParts, il suffit de cocher les WebPart à récupérer puis choisir la zone puis cliquez sur le bouton « Add ».
webpart_catalog2.png
Fig 3.9 Page Catalog
La DeclarativeCatalog comme ci-dessous contient deux WebParts. Pour les ajouter dans une nouvelle zone il suffit de cocher les WebParts concernées et la zone.
webpart_catalog3.png
Fig 3.10 Declarative Catalog
L’Import Catalog Part comme ci-dessous permet d’importer des WebPart, pour cela il faut spécifier le chemin et la zone.
webpart_catalog4.png
Fig 3.11 Import WebParts

1.7.         EditorZone

Les WebParts sont modifiables dans la zone d’édition « Editor Zone » par l’intermédiaire de quatre types d’élément de modification :
- ApparenceEditorPart
- BehaviorEditorPart
- LayoutEditorPart
- PropertyGridEditorPart
Voici les sources d’un EditorZone sans style appliqué :
<asp:EditorZone ID="EditorZone1" runat="server">
        <ZoneTemplate>
          <asp:AppearanceEditorPart runat="server"
            ID="Appearance1">
          </asp:AppearanceEditorPart>
          <asp:LayoutEditorPart runat="server" ID="Layout1">
          </asp:LayoutEditorPart>
            <asp:BehaviorEditorPart ID="BehaviorEditorPart1" runat="server" />
            <asp:PropertyGridEditorPart ID="PropertyGridEditorPart1" runat="server" />
        </ZoneTemplate>
</asp:EditorZone>
Pour accéder aux différents menus de modification, il faut être connecté, être dans le mode « Edit Mode » et choisir le WebPart à modifier en accédant à son menu (en haut à droit de chaque WebPart) puis choisir Edit.
ApparenceEditorPart va vous permettre de modifier l’apparence des WebParts notamment le titre, la taille, la visiblité.
webpart_edit1.png
Le LayoutEditorPart permet principalement de modifier la zone conteneur.
webpart_edit2.png
Le BehaviorEditorPart permet de contrôler le comportement des WebParts, de pouvoir fermer, diminuer, modifier, cacher les WebParts, de modifier leur description, les liens.
webpart_edit3.png
Le PropertyGridEditorPart permet d’éditer des propriétés dans le code source ayant comme attribut « WebBrowsable ».
webpart_edit4.png

1.8.         Conclusion

Les WebParts permettent ainsi de créer des portails dynamique et facilement personnalisable. Cette nouvelle fonctionnalité, de plus en plus répandue sur de grand site tel que Google et Yahoo, permet à l’utilisateur de construire sa page, d’ajouter ou d’enlever des fenêtres selon son choix, de définir l’apparence et la disposition de ses fenêtre. L’utilisateur a un contrôle quasi-total de la page Web. Il est cependant dommage que les WebParts intégrés par défaut à l’ASP.NET 2.0 ne soit pas un contrôle coté client, plus exactement avec l’intégration d’un CallBack sans aucun rafraîchissement de la page. Il est aujourd’hui possible de résoudre ce problème en implémentant la version AJAX de Microsoft pour l’ASP.NET, ATLAS.

2.   Conclusion

Les nouveautés du langage ASP.NET 2.0 de Microsoft apportent non seulement une simplicité au développeur dans son travail, mais aussi des nouvelles interfaces WEB, des nouvelles fonctionnalités pour les utilisateurs et clients. Ce langage innovant apporte une nouvelle conception des sites Internet de « nouvelle génération », de plus les applications WEB développées en ASP.NET 2.0 seront combinées avec la version AJAX de Microsoft, ATLAS pour rendre la navigation fluide et sans aucun rafraîchissement. D’autres nouveautés n’ont pas été traitées dans cette article sont aussi important, comme les nouveaux contrôles de Login et de données (GridView, DetailsView, …), et la sécurité des applications.

0 التعليقات:

Post a Comment

Related Posts Plugin for WordPress, Blogger...