Bonjour

j'ai fait un composite control qui sert de calendrier
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
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
Tous fonctionne bien ... sauf
Quand je valide ma page où est mon nouveau control.

En fait ça gère dans mon test une date anniversaire.
Je load ma page... pas de pb la date initiale est chargée et affichée correctement.
Je change la date. ça enregistre correctement en base et la c'est le drame , lol. Au retour, ça me raffiche l'ancienne valeur.

Après plusieurs vérif, se n'est pas mon code qui écrase. Peut-être un Pb de viewstate? mais là j'suis largué, sinon de toute façon après avoir essayé plein d'idée trouvé sur des forums j'en suis au même points.

Quelqu'un a-t-il déjà eu le pb, et surtout comment avez vous résolu celui -ci
Si vous avez le réponse sans avoir eu le pb, jsuis preneur aussi

merc a toutes les bonnes volonté