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

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

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.