IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Recupération de TextBoxes Créés Dynamiquement


Sujet :

ASP.NET

  1. #1
    Nouveau candidat au Club
    Inscrit en
    Février 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 2
    Par défaut 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 : 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
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 43
    Par défaut
    Tu pourrais toujours essayer de donner un nom unique à chacun de tes textbox et de récupérer lors retour avec un Request.Form("NomDuTextbox").

    Étant données qu'un postback exécute un submit du devrait être capable de récupérer tes valeurs ainsi.

    C'est peut-être pas la façon optimal de faire, mais ça vaut la peine d'essayer.

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2003
    Messages
    353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2003
    Messages : 353
    Par défaut
    A quel moment crées tu tes controles dynamiquement?
    Au page_Load ?

    Une chose est sure, c'est qu'il faut bien faire attention au cycle de la page.
    Je ne sais plus excatement ce qu'il faut faire, mais essaie de mettre ta création de controles sur le OnInit.

  4. #4
    Membre chevronné Avatar de predalpha
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    392
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 392
    Par défaut
    Jettes un coup d'oeil sur ce topic, ça devrait répondre à tes questions.
    http://www.developpez.net/forums/showthread.php?t=395062

  5. #5
    Nouveau candidat au Club
    Inscrit en
    Février 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 2
    Par défaut
    bonjour à tous, désolé de ma reponse tardive !
    je pensais etre averti des reponses sur ma boite mail, mais ca n'a pas été le cas !
    je me penche sur vos solutions

    A quel moment crées tu tes controles dynamiquement?
    Au page_Load ?
    je crée mes controles sur l'evenement de click d'un treeview.

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/07/2008, 15h35
  2. [VBA-E] Retrouver un textbox créé dynamique
    Par wind_vinch dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/10/2005, 12h51
  3. problème d'accès a des éléments créés dynamiquement
    Par Pymm dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 21/07/2005, 17h13
  4. Gestion séparée de composants créés dynamiquement
    Par anarpunk dans le forum Composants VCL
    Réponses: 8
    Dernier message: 15/06/2005, 10h57
  5. Erreur EACCESSVIOLATION avec des compsts créés dynamiquement
    Par tsikpemoise dans le forum Bases de données
    Réponses: 4
    Dernier message: 28/02/2004, 19h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo