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 :

Sélection par défault d'une dropdownlist dans un GridView en mode Edit


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2009
    Messages : 81
    Par défaut Sélection par défault d'une dropdownlist dans un GridView en mode Edit
    Bonjour!

    J'ai une GridView qui contient des dropdownlist à l'edition.
    Pour l'instant, je peux mettre à jours la valeur de ma colonne en sélectionnant un item dans ma dropdownlist.

    Le problème est que je n'arrive pas à sélectionner une valeur par défault pour ma liste déroulante! A l'affichage j'aurais par exemple "OK" comme valeur dans mon label, et en mode Edit avec la dropdownlist il affiche la première valeur de la liste et, du coup, modifie la valeur de mon champs quand je clique sur update.

    Voici un de mes essais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        protected void gridClientEvents_RowEditing(object sender, GridViewEditEventArgs e)
        {
            GridView grid = (GridView)sender;
     
     
     
           string action = ((Label)grid.Rows[e.NewEditIndex].FindControl("lAction")).Text;
           DropDownList dp = ((DropDownList)grid.Rows[e.NewEditIndex].FindControl("dpAction"));
           dp.SelectedItem.Text = action;
    }
    "action" ressort bel est bien la valeur du label d'affichage.

    Mais "dp" reste null. Je ne peux pas récupérér ma dropdownlist sur un événement RowEdit alors que je peux récupérer le label

    Merci d'avance !

  2. #2
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Salut,

    As-tu regardé en mode débug ce que contiennent:
    • GridViewEditEventArgs e
    • GridView grid = (GridView)sender
    Normalement tu ne devrais pas avoir à utiliser FindControl si tu es passé par le designer pour ajouter les listes déroulantes en mode edit. Tes controles doivent se trouver dans les paramètres entrants. PLus de détails sur ce post: http://www.developpez.net/forums/d73...e-findcontrol/

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2009
    Messages : 81
    Par défaut
    Salut Immobilis!

    Merci de ton aide

    Alors oui je suis passé en debug et donc

    mon GridViewEditEventArgs e sort pas grand chose a part la valeur de "NewLineEdit"

    et pour GridView grid = (Gridview) sender je suis allé regardé il y'a pas mal d'infos mais je n'arrive pas a trouver mes labels ou mes liste déroulantes. Si je vais dans "Rows" les DataItems sont "null".

    Merci pour le lien , mais comment je peux faire pour récupérer ces valeurs dans l'événement GridViewEditEventArgs?

    Peut être pour clarifier, dans ce bout de code (dans l'événement RowUpdating):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      protected void gridClientEvents_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
     
            string action = ((DropDownList)((GridView)sender).Rows[e.RowIndex].FindControl("dpAction")).SelectedValue;
    J'arrive a récupérer la valeur sélectionnée! donc j'arrive a récupérer la dropdownlist. Sauf qu'à ce moment la... C'est trop tard .

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2009
    Messages : 81
    Par défaut
    J'ai trouvé quelque chose d'intéressant, Apparemment on ne peut pas le récupérer dans l'evenement RowEditing. Mais je pourrais le faire directement dans l'événement Prerender.
    Je testerai et je vous tiens au courant.

    source : http://forums.asp.net/p/1395538/2998966.aspx

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2009
    Messages : 81
    Par défaut
    Bon voilà j'ai trouvé une solution vraiment moche. Mais au moins ça fonctionne.

    Donc tout d'abord il prend la valeur du label
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        protected void gridClientEvents_RowEditing(object sender, GridViewEditEventArgs e)
        {
           GridView grid = (GridView)sender;
           ViewState["action"] = ((Label)grid.Rows[e.NewEditIndex].FindControl("lAction")).Text;
        }


    Et ensuite il récupère la valeur qui à été placé dans une ViewState et la dropdownlist puis sélectionne la valeur par défault.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        protected void  gridClientEvents_PreRender(object sender, EventArgs e)
    {
        GridView grid = (GridView)sender;
     
        if (grid.EditIndex != -1)
        {
     
            string action = (string)ViewState["action"];
            DropDownList dp = ((DropDownList)grid.Rows[grid.EditIndex].FindControl("dpAction"));
            dp.SelectedIndex = dp.Items.IndexOf(dp.Items.FindByText(action));
         }
    }
    Bonne soirée!
    Et pour ceux qui sont bientôt en vacances, bonne vacances!

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/04/2014, 14h35
  2. Réponses: 2
    Dernier message: 20/01/2008, 15h04
  3. Inclure une dropdownlist dans un gridview
    Par Delphi-ne dans le forum ASP
    Réponses: 1
    Dernier message: 31/08/2007, 10h41
  4. DropdownList dans un Datalist en mode Edit
    Par maXrez dans le forum ASP.NET
    Réponses: 2
    Dernier message: 08/08/2007, 10h42
  5. Réponses: 1
    Dernier message: 14/05/2006, 11h50

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