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 :

Recuperer la valeur d'un dropdown dynamique


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 118
    Par défaut Recuperer la valeur d'un dropdown dynamique
    yo

    Je créé des listes descendantes dynamiquement (suite a une requete SQL) dans ma page. Leur nom m'est inconnu dans l'absolu, il est défini au fur et a mesure que je parcours mon resultat SQL.

    Comment faire pour recuperer la valeur de mes listes ? Elles sont ajoutées dans un < div > mais je n'arrive pas a les atteindre.

    Extrait de code MaPage.aspx :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id="param2" runat="server"> </div>
    Extrait de code MaPage.VB :
    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
    For Each row As DataRow In datas.Rows
                        name = row(0)   ' enregistrer le nom du parametre
                        value = row(1)  ' enregistrer la valeur du parametre
     
                        If name <> old_name Then
     
                            ' Nouveau parametre
                            If nb > 1 Then
                                ' Ajout de la liste a la page
                                Me.param2.Controls.Add(List)
                            End If
     
                            ' Reset des variables
                            old_name = name
                            nb = 1
                            List = New System.Web.UI.WebControls.DropDownList()
                            List.ID = name
                            List.AutoPostBack = False
                            List.AppendDataBoundItems = True
                            List.Items.Add(New System.Web.UI.WebControls.ListItem("All")) ' Ajout d'un element "Tous" a la liste
                            List.Items.Add(New System.Web.UI.WebControls.ListItem(value))
                        Else
     
                            ' Meme parametre => Ajouter a la liste temporaire
                            List.Items.Add(New System.Web.UI.WebControls.ListItem(value))
                            nb = nb + 1
                        End If
                    Next
    Le but du jeu :
    Parcourir un ensemble de nom/valeur, lorsque l'on a plusieurs valeur pour un meme nom => afficher une liste pour permettre a l'utilisateur de choisir une valeur.

    Le probleme :
    Je n'arrive pas a lire la valeur de mes listes une fois la page chargée. J'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	For Each ctrl As System.Web.UI.LiteralControl In Me.param2.Controls
                value = DirectCast(ctrl, System.Web.UI.WebControls.DropDownList).SelectedItem.Value
            Next
    mais ca ne marche pas. Pas plus que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	For Each ctrl As System.Web.UI.LiteralControl In Me.param2.Controls
                value = ctrl.ID.ToString
                If Not value Is Nothing Then
                    ctrl2 = Me.param2.FindControl(value)
                    value = DirectCast(ctrl2, System.Web.UI.WebControls.DropDownList).SelectedItem.Value
                End If
            Next
    Les variable ctrl et ctrl2 restent pathétiquement a "Nothing"

    Merci d'avance pour votre aide

  2. #2
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Bon, y a des trucs pas trés clairs dans ton exposé.
    Je vois ce que tu veux faire, je le fais courement moi même, amis je n'arrive pas à comprendre la structure de ta page.

    Bref, l'idée c'est d'aller chercher la DDL là où elle est. A mon avis, tu ne dois pas descndre dans le bon objet de ta page et du coup, ta DDL étant ailleurs (comme la vérité....) ben il la trouve pas.

    Ensuite, c'est quoi le DirectCast ?
    Tu veux pas utiliser une Ctype ou le DirectCast est mieux ?
    Et puis il vaut mieux faire le Ctype directement sur le FindControl et lui coller ça dans un objet que tu monte à la volée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim uneDDL as DropDownList = CType(Me.FindControl("maDDL"),DropDownList)
    Ensuite tu manipule uneDDL sachant que c'est celle que tu as générée précédement.

    ça t'aide ?

Discussions similaires

  1. recuperer la valeur d'une liste dynamique
    Par hugodu28 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 20/06/2012, 16h03
  2. [AC-2007] Recuperer valeur d'un DropDown d'un ruban perso Access 2007
    Par YoufsKwi dans le forum IHM
    Réponses: 2
    Dernier message: 16/05/2011, 06h44
  3. [MySQL] recuperer la valeur d'un champ dans un tableau dynamique
    Par patheo2 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 28/01/2010, 00h55
  4. Réponses: 2
    Dernier message: 24/08/2007, 14h25
  5. Réponses: 3
    Dernier message: 19/10/2006, 09h47

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