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 :

Récupérer la valeur d'un contrôle dynamiquement créé


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 43
    Par défaut Récupérer la valeur d'un contrôle dynamiquement créé
    Bonjour,

    Pour les besoins d'un site, je dois créer plusieurs formulaires dynamiquement. Ceux-ci contiennent donc un nombre de champ indéfini, qui sont créés lors du runtime.

    Après Postback, donc après avoir validé le formulaire, j'ai besoin de récupérer la valeur des contrôles créés. Or, je n'y arrive pas.

    Prenons un exemple simple. Je souhaite créer un formulaire listant tous les clients contenus dans une table de ma base. Pour chaque client, j'affiche son nom suivi d'un contrôle checkbox ayant pour ID l'ID du client dans la base.

    L'utilisateur peut cocher n'importe quelle checkbox. Après validation du formulaire, j'ai besoin de recupérer la valeur de la checkbox (Checked = True ou False). Je parcoure donc l'ensemble des contrôles à coup de foreach.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Public Sub IterateThroughChildren(ByVal parent As Control)
            For Each c As Control In parent.Controls
                If (c.GetType().ToString() = "System.Web.UI.WebControls.CheckBox") Then
                    Dim che As CheckBox = c
                    // Traitement
                End If
                If (c.Controls.Count <> 0) Then
                    IterateThroughChildren(c)
                End If
           Next
    End Sub
    L'ensemble des CheckBox est correctement récupéré, mais leur valeur est toujours égale à False, que la checkbox en question ait été cochée ou non.

    Si quelqu'un a une solution pour résoudre mon problème (en C# ou VB.NET, peu importe), je suis preneur.

    Merci par avance.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 51
    Par défaut
    Bonjour, j'ai déjà rencontré ce genre de problème.

    En fait pour récupérer la valeur de tes forms que tu as créé dynamiquement il faut recreer les même dans la page suivante, donc après le postback. C'est la première condition pour qu'il accepte de récupérer les valeurs.

    La deuxième condition c'est que lorsque tu as créé tes contrôles de type Checkbox dynamiquement, tu leur as bien mis le EnabledViewState a true.

    J'espère que cette réponse t'aura aidé.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 43
    Par défaut
    Merci pour ta réponse Neodream.

    Mes formulaires sont bien recréés après Postback. La propriété EnableViewState de mes checkbox n'était pas clairement définie (d'ailleurs, je pense que la valeur par défaut est True non ?), mais même en l'ajoutant, cela ne change rien au problème.

    Pourtant, après Postback, mes checkbox reprennent correctement la valeur qu'elles possédaient avant validation du formulaire (celles qui ont été cochées reste cochées et celles qui ne l'étaient pas ne le sont toujours pas), ce qui est d'autant plus étrange.

    Afin de voir si je n'avais pas fais une erreur bête dans mon code, j'ai ajouté une checkbox manuellement et testé mon formulaire à nouveau. Cette fois-ci, la valeur est correctement récupérée. Le problème vient donc bien de celles créées dynamiquement.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 43
    Par défaut
    Problème résolu. J'ai tout simplement défini un évènement onClick sur mon bouton au lieu de déclencher une méthode en testant si le postback avait été effectué au chargement de ma page.

    D'ailleurs, je ne comprend pas pourquoi cela marche dans un cas et pas dans l'autre. Si quelqu'un a la réponse, je veux bien l'entendre.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment faites-vous pour récupérer la valeur d'une liste dynamique ?
    Par Cvbdev dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 03/06/2010, 09h01
  2. récupérer les valeurs d'un formulaire dynamique
    Par une_tite_question dans le forum Langage
    Réponses: 4
    Dernier message: 05/08/2008, 16h06
  3. Récupérer la valeur de champs générés dynamiquement
    Par dedeloux dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 22/04/2008, 22h00
  4. Réponses: 10
    Dernier message: 22/08/2007, 18h07
  5. Récupérer les valeurs des champs créés dynamiquement
    Par outlawz dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 03/05/2006, 16h32

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