Bonjour à tous,

Merci à ceux qui prendront le temps de me lire

Voilà. Je travaille actuellement sur une page ASPX avec un composant de gestion d'onglets.
C'est un système tout bête, lorsque je clique sur le premier onglet s'affiche le contenu du premier onglet, quand je clique sur le deuxième, le contenu du 2eme. (le tout en JS) Un peu dans ce goût là : http://www.supportduweb.com/ftp/ybou...s/onglets.html

Mon souci vient de la partie LoadPostData des composants(textbox, ...) faisant partie de chaque onglet.
Lorsque mes textbox sont dans la page en standard sans onglet aucun problème, mais lorsque je les mets dans un onglet, le postData ne se fait plus...Les données postées ne mettent pas à jour les contrôles.

Voici le code de mon composant
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
 
Imports System.Web.UI
 
Namespace WebControls.Common
  <ParseChildren(True)> _
  <PersistChildren(False)> _
  Public Class Tab
    Inherits CompositeControl
    Implements INamingContainer
 
 
#Region "Attributs"
    Private moOngletsList As BulletedList
    Private moUpanContent As UpdatePanel
    Private mnNumOngletActif As Byte
#End Region
 
#Region "Propriétés"
    Private maOnglets As New List(Of Onglet)
    <PersistenceMode(PersistenceMode.InnerProperty)> _
    Public ReadOnly Property Onglets() As List(Of Onglet)
      Get
        Return maOnglets
      End Get
    End Property
#End Region
 
#Region "Evenements"
    Protected Overrides Sub OnInit(ByVal e As System.EventArgs)
      EnsureChildControls()
      mnNumOngletActif = 0
      MyBase.OnInit(e)
    End Sub
 
    Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
      MyBase.OnLoad(e)
 
      Dim loHlk As HyperLink
 
      For Each loOnglet In Onglets
        moUpanContent.ContentTemplateContainer.Controls.Add(loOnglet)
        loHlk = New HyperLink() With {.Text = loOnglet.Title}
        loHlk.Attributes.Add("PanID", loOnglet.ClientID)
        moOngletsList.Controls.Add(loHlk)
      Next
 
      For i = 0 To Me.Onglets.Count - 1
        If mnNumOngletActif <> i Then
          Me.Onglets(i).Attributes.Add("style", "display: none")
        End If
      Next
    End Sub
 
    Protected Overrides Sub OnPreRender(ByVal e As System.EventArgs)
      MyBase.OnPreRender(e)
 
      ScriptManager.RegisterClientScriptInclude( _
        Me.Page _
        , Me.Page.GetType _
        , "onglet" _
        , ResolveClientUrl("~/_Code/WebControl/Tab/Tab.js")
      )
    End Sub
 
    Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
      ScriptManager.RegisterStartupScript( _
        Me.Page _
        , Me.Page.GetType() _
        , "key" & Me.ClientID _
        , "$(function() { $('#" & Me.ClientID & "').initTab(); });" _
        , True
      )
 
      MyBase.Render(writer)
    End Sub
#End Region
 
#Region "Méthodes"
    Protected Overrides Sub CreateChildControls()
      MyBase.CreateChildControls()
 
      moOngletsList = New BulletedList() With {.CssClass = "tab"}
      Me.Controls.Add(moOngletsList)
 
      moUpanContent = New UpdatePanel() With {.ID = "upanOnglets", .ChildrenAsTriggers = False, .UpdateMode = UpdatePanelUpdateMode.Conditional}
      moUpanContent.Attributes("style") = "clear:left"
      Me.Controls.Add(moUpanContent)
 
      Me.ChildControlsCreated = True
    End Sub
#End Region
 
  End Class
 
  <ParseChildren(False)> _
  <PersistChildren(True)> _
  Public Class Onglet
    Inherits CompositeControl
 
    Private moPanContent As Panel
 
    Private msTitle As String
    Public Property Title() As String
      Get
        Return msTitle
      End Get
      Set(ByVal value As String)
        msTitle = value
      End Set
    End Property
 
    Protected Overrides Sub CreateChildControls()
      MyBase.CreateChildControls()
 
      Me.moPanContent = New Panel With {.CssClass = "tab-panel"}
      Me.Controls.Add(Me.moPanContent)
    End Sub
 
    Protected Overrides Sub AddParsedSubObject(ByVal obj As Object)
      EnsureChildControls()
      moPanContent.Controls.Add(obj)
    End Sub
  End Class
End Namespace
Au niveau de l'aspx, ça donne, en simplifié ceci :

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
 
<Tab ID="TabOnglets" runat="server">
  <Onglets>
    <Onglet Title="1er Onglet" runat="server">
      <div>
        <asp:TextBox ID="txtCommentaire" TextMode="MultiLine" Rows="8"  runat="server" />
      </div>
    </Onglet>
    <Onglet Title="2eme onglet" runat="server">
      <div>
        <asp:TextBox ID="txtCommentaire2" TextMode="MultiLine" Rows="8"  runat="server" />
      </div>
    </Onglet>
  </Onglets>
 </Tab>
En clair, lorsque je modifie la valeur de txtCommentaire que je fais un post, rien n'est mis à jour sur contrôle serveur alors que la valeur est bien postée...
Je pense qu'il doit manquer quelque chose sur les composant Tab et Onglet qui empêchent de reconstruire la bonne hiérarchie des contrôles et donc de mettre à jour la textbox. Mais alors quoi? ça me dépasse...

Si jamais quelqu'un voit de quoi il peut s'agir, il me sauve.