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 :

selectionner valeur dans un dropdownlist d'un griview en editTemplate


Sujet :

ASP.NET

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Points : 56
    Points
    56
    Par défaut selectionner valeur dans un dropdownlist d'un griview en editTemplate
    salut,

    Comme mon titre l'indique j'aimerais que quand je passe mon gridview en mode edit. Que la valeur du dropdownlist soit positionné sur la bonne valeur.

    merci

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:DropDownList ID="ddl" runat="server" SelectedValue='<%# Bind("nom_du_champ") %>'/>

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Points : 56
    Points
    56
    Par défaut
    salut,

    J'avais déjà testé cette solution mais le problème est qu'il me lance une InvalidOpérationException au moment du databind() que je fais dans un event de mon gridview, rowcreated:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    protected void gridDomaine_RowCreated(object sender, GridViewRowEventArgs e)
        {
            dtServeur = catalog.getAllServeur();
            //////Remplissage de la liste
            if (e.Row.FindControl("ddlServeur") != null)
            {
                ((DropDownList)e.Row.FindControl("ddlServeur")).DataTextField = dtServeur.Columns["srv_nom"].ToString();
                ((DropDownList)e.Row.FindControl("ddlServeur")).DataValueField = dtServeur.Columns["srv_id"].ToString();
                ((DropDownList)e.Row.FindControl("ddlServeur")).DataSource = dtServeur;
                ((DropDownList)e.Row.FindControl("ddlServeur")).DataBind();
            }
     
        }
    Les méthodes de liaison de données telles que Eval(), XPath() et Bind() peuvent uniquement être utilisées dans le contexte d'un contrôle lié aux données.

    MErci de votre aide

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    ah ok, ta GridView n'est pas bindée à une source de données ? Dans ce cas il suffit d'affecter la SelectedValue dans le code-behind...

    Aussi, tu devrais stocker dans une variable le résultat du FindControl pour ne pas avoir à l'appeler à chaque fois...

  5. #5
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Points : 56
    Points
    56
    Par défaut
    J'ai effectivement mon datagrid qui est bondé avec un autre dataTable.
    J'ai fait ceci qui me retourne une exception: argumentOutOfRangeException

    'ddlServeur' a un SelectedValue qui n'est pas valide, car il n'existe pas dans la liste des éléments.
    Nom du paramètre : value

    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
    protected void gridDomaine_RowCreated(object sender, GridViewRowEventArgs e)
        {
            dtServeur = catalog.getAllServeur();
            //////Remplissage de la liste
            if (e.Row.FindControl("ddlServeur") != null)
            {
                ((DropDownList)e.Row.FindControl("ddlServeur")).DataTextField = dtServeur.Columns["srv_nom"].ToString();
                ((DropDownList)e.Row.FindControl("ddlServeur")).DataValueField = dtServeur.Columns["srv_id"].ToString();
                ((DropDownList)e.Row.FindControl("ddlServeur")).DataSource = dtServeur;
                ((DropDownList)e.Row.FindControl("ddlServeur")).SelectedValue = dtDomaine.Columns["dom_fk_srv"].ToString();
                ((DropDownList)e.Row.FindControl("ddlServeur")).DataBind();
     
            }
     
        }
    Mais c'est normal vu que mon dtDomaine a été bindé dans mon page_load.

    Qu'est ce que je dois donc mettre pour le selectedValue?

    merci

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    A mon avis le problème est surtout que tu affectes le SelectedValue avant de faire le DataBind, alors qu'il faut le faire après...

  7. #7
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Points : 56
    Points
    56
    Par défaut
    toujours la même exception ormis qu'elle me renvoie où je bind mon gridview

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    ah ok, j'avais pas fait gaffe à la valeur que tu affectais au SelectedValue... là tu lui mets le nom de la colonne, c'est pas ça qu'il faut. Il faut mettre la valeur de la colonne définie comme DataValueField pour l'élément qui doit être sélectionné. Par exemple, dans ton cas, il faut mettre la valeur du srv_id de l'élément qui doit être sélectionné.

  9. #9
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Points : 56
    Points
    56
    Par défaut
    C'est bien l'id du serveur que j'affiche.

    en fait le dataTable dtServeur remplit le ddl avec toutes les valeurs possibles pour un domaine. Et la valeur de l'id qui soit être sélectionné se trouve dans mon dataTable dtDomaine qui remplit mon gridview.

    Je sais pas si je suis assez clair

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par polo86 Voir le message
    en fait le dataTable dtServeur remplit le ddl avec toutes les valeurs possibles pour un domaine. Et la valeur de l'id qui soit être sélectionné se trouve dans mon dataTable dtDomaine qui remplit mon gridview.
    Ben justement, la SelectedValue du DropDownList doit être l'ID du serveur pour la ligne du GridView. Toi tu lui affectes un nom de colonne, alors qu'il faut mettre une valeur d'ID de serveur.

    D'ailleurs je ne comprends pas pourquoi le Bind ne marchait pas... tu peux montrer le code que tu avais écrit pour ça ?

  11. #11
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Points : 56
    Points
    56
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dtDomaine.Columns["dom_fk_srv"].ToString();
    cette colonne là est un champ dans ma table domaine qui pointe vers l'id de la table serveur pour la row du gridview

  12. #12
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par polo86 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dtDomaine.Columns["dom_fk_srv"].ToString();
    cette colonne là est un champ dans ma table domaine qui pointe vers l'id de la table serveur pour la row du gridview
    Oui j'ai bien compris, mais ce code renvoie juste le nom de la colonne, pas la valeur du champ pour la ligne en cours. D'ailleurs ça ne sert à rien d'écrire dtDomaine.Columns["dom_fk_srv"].ToString(), c'est exactement comme si tu écrivais juste "dom_fk_srv"

    Pour récupérer la valeur et l'affecter au SelectedValue tu peux faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DropDownList ddl = e.Row.FindControl("ddlServeur") as DropDownList;
    DataRowView drv = e.Row.DataItem as DataRowView;
    ddl.SelectedValue = drv["dom_fk_srv"];
    Par contre je suis pas sûr que le DataItem soit déjà accessible dans l'évènement RowCreated, il faut peut-être faire ça dans l'évènement RowDataBound

  13. #13
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Points : 56
    Points
    56
    Par défaut
    merci beaucoup tout fonctionne

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

Discussions similaires

  1. [C#] Sélectionner une valeur dans une dropdownlist
    Par P.O.K dans le forum ASP.NET
    Réponses: 12
    Dernier message: 09/06/2011, 11h26
  2. Réponses: 1
    Dernier message: 05/10/2009, 09h56
  3. selectionner valeur d'un DropDownList
    Par dv-2008 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 04/01/2009, 15h56
  4. Afficher une valeur dans un DropDownList
    Par MayOL69bg dans le forum C#
    Réponses: 1
    Dernier message: 20/03/2007, 15h08
  5. Réponses: 5
    Dernier message: 24/01/2006, 21h05

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