| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 
 |  
Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Text
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
 
<DefaultProperty("DateAffichage"), ToolboxData("<{0}:Calendrier runat=server></{0}:Calendrier>")> _
Public Class Calendrier
    Inherits CompositeControl
 
    Private txtDate As TextBox
    Private calend As AjaxControlToolkit.CalendarExtender
    Private dteMask As AjaxControlToolkit.MaskedEditExtender
    Private dteMaskValid As AjaxControlToolkit.MaskedEditValidator
    Private btnImg As ImageButton
 
    <Bindable(True), Category("Appearance"), DefaultValue(""), Localizable(True), Description("Date à afficher au démarrage")> _
    Public Property DateAffichage() As DateTime
        Get
            EnsureChildControls()
            If IsDate(txtDate.Text) Then
                Return txtDate.Text
            Else 'Cas Vide
                Return Nothing
            End If
        End Get
        Set(ByVal Value As DateTime)
            EnsureChildControls()
            txtDate.Text = Value
            If Value <> Nothing Then calend.SelectedDate = Value
        End Set
    End Property
 
    <Bindable(True), Category("Comportement"), DefaultValue(""), Localizable(True), Description("Date à afficher au démarrage")> _
    Public Property DateObligatoire() As Boolean
        Get
            EnsureChildControls()
            If ViewState("CalendrierDateObligatoire") Is Nothing Then ViewState("CalendrierDateObligatoire") = False
            Return CBool(ViewState("CalendrierDateObligatoire"))
        End Get
        Set(ByVal Value As Boolean)
            EnsureChildControls()
            ViewState("CalendrierDateObligatoire") = Value
            dteMaskValid.IsValidEmpty = Not Value
            If Value AndAlso txtDate.Text.Trim.Length = 0 Then calend.SelectedDate = Now
        End Set
    End Property
 
    <Bindable(True), Category("Appearance"), DefaultValue(""), Localizable(True), Description("Image du calendrier")> _
    Public Property URLImageCalendrier() As String
        Get
            EnsureChildControls()
            Return btnImg.ImageUrl
        End Get
        Set(ByVal Value As String)
            EnsureChildControls()
            btnImg.ImageUrl = Value
        End Set
    End Property
 
    <Bindable(True), Category("Appearance"), DefaultValue(""), Description("Error message for the date empty validator.")> _
    Public Property MessageErrorEmpty() As String
        Get
            EnsureChildControls()
            Return dteMaskValid.EmptyValueMessage
        End Get
        Set(ByVal value As String)
            EnsureChildControls()
            dteMaskValid.EmptyValueMessage = value
        End Set
    End Property
 
    < _
    Bindable(True), _
    Category("Appearance"), _
    DefaultValue(""), _
    Description("Error message for the date invalid validator.") _
    > _
    Public Property DateInvalidErrorMessage() As String
        Get
            EnsureChildControls()
            Return dteMaskValid.InvalidValueMessage
        End Get
        Set(ByVal value As String)
            EnsureChildControls()
            dteMaskValid.InvalidValueMessage = value
        End Set
    End Property
 
    <Bindable(True), Category("Appearance"), DefaultValue(""), Localizable(True), Description("Class à appliquer sur le textbox")> _
    Public Property txtClass() As String
        Get
            EnsureChildControls()
            If ViewState("CalendrierTxtCss") Is Nothing Then
                Return ""
            Else
                Return CStr(ViewState("CalendrierTxtCss"))
            End If
        End Get
        Set(ByVal Value As String)
            EnsureChildControls()
            ViewState("CalendrierTxtCss") = Value
            txtDate.CssClass = Value
        End Set
 
    End Property
 
    <Bindable(True), Category("Appearance"), DefaultValue(""), Localizable(True), Description("Class à appliquer sur le calendrier")> _
    Public Property CalendClass() As String
        Get
            EnsureChildControls()
            If ViewState("CalendrierCalCss") Is Nothing Then
                Return ""
            Else
                Return CStr(ViewState("CalendrierCalCss"))
            End If
        End Get
        Set(ByVal Value As String)
            EnsureChildControls()
            ViewState("CalendrierCalCss") = Value
            calend.CssClass = Value
        End Set
    End Property
 
    Protected Overrides Sub CreateChildControls()
        Controls.Clear()
 
        txtDate = New TextBox()
        txtDate.ID = "txtDate1"
 
        dteMask = New AjaxControlToolkit.MaskedEditExtender
        dteMask.ID = "Mask1"
        dteMask.TargetControlID = txtDate.ID
        dteMask.CultureName = System.Globalization.CultureInfo.CurrentCulture.Name '"fr-FR"
        dteMask.AcceptNegative = AjaxControlToolkit.MaskedEditShowSymbol.None
        dteMask.AcceptAMPM = AjaxControlToolkit.MaskedEditShowSymbol.None
        dteMask.DisplayMoney = AjaxControlToolkit.MaskedEditShowSymbol.None
        dteMask.Mask = "99/99/9999"
        dteMask.MaskType = AjaxControlToolkit.MaskedEditType.Date
        dteMask.MessageValidatorTip = True
 
        dteMaskValid = New AjaxControlToolkit.MaskedEditValidator
        dteMaskValid.ID = "MV1"
        dteMaskValid.ControlToValidate = txtDate.ID
        dteMaskValid.ControlExtender = dteMask.ID
        dteMaskValid.IsValidEmpty = Not DateObligatoire
        dteMaskValid.EmptyValueMessage = MessageErrorEmpty
        dteMaskValid.InvalidValueMessage = DateInvalidErrorMessage
 
        btnImg = New ImageButton
        btnImg.ID = "btnCalendrier1"
        btnImg.ImageUrl = URLImageCalendrier
        btnImg.CausesValidation = False
        btnImg.ImageAlign = ImageAlign.Top
 
        calend = New AjaxControlToolkit.CalendarExtender
        calend.ID = "calend1"
        calend.PopupButtonID = btnImg.ID
        calend.Format = "dd/MM/yyyy"
        calend.TargetControlID = txtDate.ID
 
        Me.Controls.Add(txtDate)
        Me.Controls.Add(dteMask)
        Me.Controls.Add(btnImg)
        Me.Controls.Add(calend)
        Me.Controls.Add(dteMaskValid)
 
    End Sub
 
    Protected Overrides Sub RecreateChildControls()
        EnsureChildControls()
    End Sub
 
End Class | 
Partager