Asp.net - exemple de développement d'un custom web control pour la gestion des entêtes de page

Soyez le premier à donner votre avis sur cette source.

Vue 16 930 fois - Téléchargée 496 fois

Description

Cette source vous permet de gérer les entêtes de page simplement par une Classe VB.NET.

Les Custom Web Controls sont présentés sur la librairie MSDN ici :

- http://msdn.microsoft.com/library/fre/default.asp?url=/library/fre/vbcon/html/vboriWebUserControls.asp

Je vous invite à consulter cette adresse si vous souhaitez en apprendre plus sur les Custom Web Control.

Source / Exemple :


'**********************************************************************************
' $Archive:  $ 
' $Author:  $ 
' $Date:  $  $Revision:  $
'  Description : Exemple de développement d'un CustomWebControl basé sur un Exemple d'Entête
'               de Page que l'on placera simplement dans la page ASPX
'               
' *********************************************************************************

Imports System.ComponentModel
Imports System.Web.UI

''' -----------------------------------------------------------------------------
''' Project	 : DotNetSysInfo
''' Class	 : FabWebControl
''' 
''' -----------------------------------------------------------------------------
''' <summary>
''' Exemple de développement d'un CustomWebControl basé sur un Exemple d'Entête
''' de Page que l'on placera simplement dans la page ASPX
''' </summary>
''' <remarks>
''' </remarks>
''' <history>
''' 	[moi]	04/08/2004	Created
''' </history>
''' -----------------------------------------------------------------------------
<DefaultProperty("TitreEntete"), ToolboxData("<{0}:FabWebControl runat=server></{0}:FabWebControl>")> Public Class FabWebControl
    Inherits System.Web.UI.WebControls.WebControl

    Dim _TitreEntete As String = ""
    Dim _SousTitreEntete As String = ""
    Dim _CommentaireTitreEntete As String = ""
    Dim _URLImageEntete As String = ""

#Region "Propriétés du WebControl"

    ''' -----------------------------------------------------------------------------
    ''' <summary>
    ''' Titre de l'entete que l'on utilisera dans la page
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks>
    ''' </remarks>
    ''' <history>
    ''' 	[moi]	04/08/2004	Created
    ''' </history>
    ''' -----------------------------------------------------------------------------
    <Bindable(True), Category("Appearance"), DefaultValue("")> Property [TitreEntete]() As String
        Get
            Return _TitreEntete
        End Get

        Set(ByVal Value As String)
            _TitreEntete = Value
        End Set
    End Property

    ''' -----------------------------------------------------------------------------
    ''' <summary>
    ''' SousTitre de l'entete que l'on utilisera dans la page
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks>
    ''' </remarks>
    ''' <history>
    ''' 	[moi]	04/08/2004	Created
    ''' </history>
    ''' -----------------------------------------------------------------------------
    <Bindable(True), Category("Appearance"), DefaultValue("")> Property [SousTitreEntete]() As String
        Get
            Return _SousTitreEntete
        End Get

        Set(ByVal Value As String)
            _SousTitreEntete = Value
        End Set
    End Property

    ''' -----------------------------------------------------------------------------
    ''' <summary>
    ''' Commentaire de l'entete que l'on utilisera dans la page
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks>
    ''' </remarks>
    ''' <history>
    ''' 	[moi]	04/08/2004	Created
    ''' </history>
    ''' -----------------------------------------------------------------------------
    <Bindable(True), Category("Appearance"), DefaultValue("")> Property [CommentaireTitreEntete]() As String
        Get
            Return _CommentaireTitreEntete
        End Get

        Set(ByVal Value As String)
            _CommentaireTitreEntete = Value
        End Set
    End Property

    ''' -----------------------------------------------------------------------------
    ''' <summary>
    ''' URL de l'image qui sera associée à l'entête de la page
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks>
    ''' </remarks>
    ''' <history>
    ''' 	[moi]	04/08/2004	Created
    ''' </history>
    ''' -----------------------------------------------------------------------------
    <Bindable(True), Category("Appearance"), DefaultValue("")> Property [URLImageEntete]() As String
        Get
            Return _URLImageEntete
        End Get

        Set(ByVal Value As String)
            _URLImageEntete = Value
        End Set
    End Property

    ' -----------------------------------------------------------------------------
#End Region

    ''' -----------------------------------------------------------------------------
    ''' <summary>
    ''' Sortie envoyée par le WebControl lors de son placement dans la page
    ''' </summary>
    ''' <param name="output"></param>
    ''' <remarks>
    ''' </remarks>
    ''' <history>
    ''' 	[moi]	04/08/2004	Created
    ''' </history>
    ''' -----------------------------------------------------------------------------
    Protected Overrides Sub Render(ByVal output As System.Web.UI.HtmlTextWriter)

        ' On va déja paramétrer la date courante afin de l'afficher dans l'entête
        Dim c As New System.Globalization.CultureInfo("fr-FR")
        Dim tempdate As String = DateTime.Now.ToString("f", c.DateTimeFormat)

        ' Variable temporaire qui contiendra le flux HTML à renvoyer
        Dim Temp As New System.Text.StringBuilder

        ' Chargement du flux HTML que l'on aura en sortie
        Temp.Append("<TABLE cellSpacing='1' cellPadding='1' width='100%' border='0'>")
        Temp.Append("<TR width='100%'>")
        Temp.Append("<TD>")
        If Not [URLImageEntete] Is Nothing AndAlso [URLImageEntete] <> "" Then
            Temp.Append("<IMG src='" & [URLImageEntete] & "' align='left' Height='62'>")
        End If
        Temp.Append("<FONT SIZE=4><B>")
        Temp.Append([TitreEntete])
        Temp.Append("</B></FONT><BR><FONT SIZE=2><B>")
        Temp.Append([SousTitreEntete])
        Temp.Append("</B></FONT><BR>")
        Temp.Append([_CommentaireTitreEntete])
        Temp.Append("<TD vAlign='top' align='right'>")
        Temp.Append(tempdate)
        Temp.Append("</TD></TR></TABLE><BR><BR>")

        output.Write(Temp.ToString)
    End Sub

    ' -----------------------------------------------------------------------------
End Class

' -------------------- UTILISATION DU CONTROL --------------------------
' Directement dans la page ASPX :

....
<%@ Register 
                TagPrefix="cc1" 
                Namespace="LeNamSpace" 
                Assembly="LeNomDuProjet" %>
....
<cc1:FabWebControl 
                id="FabWebControl1" 
                runat="server" 
                SousTitreEntete="Sous Titre 2" 
                TitreEntete="Titre 2"
                CommentaireTitreEntete="Commentaire 2"
                URLImageEntete="./images/information.gif">
</cc1:FabWebControl>

....

' -------------------------------------------------------------------
' Directement dans le fichier du Code Behind :

       Dim Testcontrol As New FabWebControl

        Testcontrol.CommentaireTitreEntete = "Le commentaire"
        Testcontrol.URLImageEntete = "./images/question.gif"
        Testcontrol.TitreEntete = "Le titre"
        Testcontrol.SousTitreEntete = "Le Sous Titre"

        Me.Controls.Add(Testcontrol)

' -------------------------------------------------------------------

Conclusion :


Bon coding

Romelard Fabrice (Alias F___).

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

jesusonline
Messages postés
6827
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
16 -
C'est tres simple, mais je trouve ton exemple interessant, car on voit ainsi comment concevoir un custom web control :)

petite remarque, tu n'as pas expliqué comment ajouté ce controle dans la page aspx, ce qui n'est pas toujours tres simple

Par contre j'ai une question : pourquoi as tu utilisé des crochets autour de tes variables ? c'est pas la premiere fois que je les vois mais j'ai jamais compris le but :)
cs_fabrice69
Messages postés
1766
Date d'inscription
jeudi 12 octobre 2000
Statut
Modérateur
Dernière intervention
11 décembre 2013
4 -
Exact je vais ajouter la facon de l'utilser dans les 2 méthodes.
Je crois que les [] servent pour l'appel direct depuis Visual Studio.NET dans les propriétés quand on place le composant dans la page ASPX.

F___
jesusonline
Messages postés
6827
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
16 -
possible pour les [] car j'ai vu ca que sur des sources qui venait de la msdn
cs_Domilo
Messages postés
32
Date d'inscription
jeudi 31 janvier 2002
Statut
Membre
Dernière intervention
22 février 2005
-
Bonjour,

Juste au sujet des crochets autour des variable :

Cela peut permettre de déclarer un nom de variable avec un mot réservé
Exemple, le nom d'un paramètre d'une fonction peut être [String] ce qui peut la rendre plus parlant pour le programmeur qui appelle la fonction

Je ne sais pas si d'autres rôles sont possibles.

Mais hors VB, sur MS-Sql, les crochets peuvent servir aussi a nommer un champ contenant espace, apostrophe,...

A+
jesusonline
Messages postés
6827
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
16 -
Merci pour ton info, j'ai testé :

Public Function Test(ByVal [String] As String) As String
Return [string]
End Function

et effectivement qd j'appelle Test VS.net m'affiche un tooltip
Test(String as String) as string

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.