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 17 756 fois - Téléchargée 573 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 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
11 août 2004 à 11:42
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
cs_Domilo Messages postés 32 Date d'inscription jeudi 31 janvier 2002 Statut Membre Dernière intervention 22 février 2005
11 août 2004 à 09:52
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 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
5 août 2004 à 14:48
possible pour les [] car j'ai vu ca que sur des sources qui venait de la msdn
cs_fabrice69 Messages postés 1765 Date d'inscription jeudi 12 octobre 2000 Statut Membre Dernière intervention 11 décembre 2013 5
5 août 2004 à 14:28
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 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
5 août 2004 à 14:23
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 :)

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.