Recupération de TextBoxes Créés Dynamiquement
Bonjour à tous !
Ce Forum m'as déja Sorti de Bien des Galères mais c'est la première fois que je Poste ( c'est vous dire si je suis dans la tourbe ;) )
Pour Expliquer le contexte , je developpe actuellement une application Asp.net destinée à la gestion d'une banque de scripts.
Aucune Base de Données, seulement des Fichiers XML Normalisées qui configurent chaque sous application.
De Manère Dynamque, j'utilise un systeme de classes permettant de générer un Formulaire composé de Controles Créés à la Volée puis insérés dans un Panel.
Voila le Probleme : je ne parviens pas à rececuperer les Valeurs de mes TextBoxes au PostBack, et mon Panel est vidé et reinitialisé automatiquement.
je m'explique donc sur mon code :
Voila la Fonction de Parsing XML ( qui fonctione parfaitement)
Code:
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
| Public Function PanelOrganiser(ByVal NameFile As String, ByVal xPanel As Panel)
Dim TxtID As Integer = 1
Dim noeud, noeudEnf As XmlNode
Dim PartXML As XmlNodeList
Dim XmlFile As XmlDocument = XmlLoading(NameFile)
PartXML = XmlFile.DocumentElement.GetElementsByTagName("line")
'on parse le fichier XML
For Each noeud In PartXML
For Each noeudEnf In noeud.ChildNodes
If noeudEnf.LocalName = "txt" Then
Dim txt As New TextBox
txt.ID = "txt" & TxtID
txt.Attributes("runat") = "server"
xPanel.Controls.Add(New LiteralControl("- " + noeudEnf.InnerText + " : "))
xPanel.Controls.Add(txt)
TxtID = TxtID + 1
txt.Dispose()
End If
Next
xPanel.Controls.Add(New LiteralControl("<br>"))
Next
xPanel.Visible = True
Return 1 ' pour les controles d'erreur
End Function |
Evidament , j'ai allégé le code pour se limiter à la prise en charge de mes Textboxes.
Du Codé du code de la Page, la liste des Applis disponibles sont gerées par un Treeview. Sur l'evenement de selection d'un Noeud, le Formulaire de l'appli slectionée se charge.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| Protected Sub TreeView1_SelectedNodeChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TreeView1.SelectedNodeChanged
' evenement de selection d'une appli.
If TreeView1.SelectedNode.Text <> "Applications" Then
MyAppli.ParseXML(TreeView1.SelectedNode.Text) 'Construction d'un Objet a partir du Fichier XML
Page.Title = "Application : " & MyAppli.GetAppliName
LblAppliname.Text = MyAppli.GetAppliName
MyAppli.PanelOrganiser(TreeView1.SelectedNode.Text, PanelAppli) ' Appel de la Fonction de Remplissage du Panel
End If
End Sub |
a cet evenement, tout se passe bien.
un exemple de code que je comptais utiliser pour recuperer les Valeurs.
Code:
1 2 3 4 5 6
| Dim obj As Object
For Each obj In PanelAppli.Controls
' if pour Textbox
Tableau = obj.text ' enregistrement des données dans un Tableau mis en memoire dans l'objet d'application
Next |
Voila donc ou cela ne focntione pas.
quelque soit l'evenement de lancement de ce code, le contenu des Textboxes n'est pas Sauvegardé dans mon Objet.
je ne parviens pas à rendre persistant le contenu de mon Panel , meme en activant le Viewstate...
Cela fait plusieurs Jours que je suis dessus et ca commence à Fumer ;)
j'attends avec impatience vos Idées ;)