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 :

[GridView] Récupérer en code behind un DropDownList contenu dans une cellule


Sujet :

ASP.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 60
    Points : 54
    Points
    54
    Par défaut [GridView] Récupérer en code behind un DropDownList contenu dans une cellule
    Bonjour,

    J'ai un problème assez dérangeant concernant une GridView dans un UpdatePanel. Un des colonnes contient une DropDownList, et j'ai essayé pas mal de trucs pour remplir cette dernière par la liste des valeurs possibles en code behind (impérativement, impossibilité d'utiliser une datasource dans le designer). Mon problème est le suivant: je n'arrive pas à retrouver la référence vers mon controle de type DropDownList pour lui attribuer une datasource et databinder le tout.

    Voici mon code asp (épuré):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
          <asp:GridView id="maGridView" runat="server">
              <Columns>
                  <asp:TemplateField HeaderText="Ma colonne avec DropDownList">
                      <ItemTemplate>
                          <asp:DropDownList id="maDropDownList" runat="server" />
                      </ItemTemplate>
              <Columns>
          </asp:GridView>

    Et voici ce que j'ai tenté après avoir lu le post suivant: http://www.developpez.net/forums/d71...ridview-table/, de me câbler sur l'event RowCreated et de retrouver mon controle ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    e.Row.FindControl("maDropDownList")
    Seulement j'obtiens une NullReferenceException. Une petite idée?

    Merci!

  2. #2
    Expert confirmé
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Points : 4 066
    Points
    4 066
    Par défaut
    Bonjour,

    Etant donné que tu utilises des TemplateField, il te faut pointer sur la bonne cellule de ta ligne (donc e.Row.Cell[index].FindControl()).

    Tu pourrais également utiliser la méthode FindControl récursive plutôt que FindControl de base (pour le code, cf google).

    En espérant t'avoir aidé.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 60
    Points : 54
    Points
    54
    Par défaut
    Hello Nicolas, et merci pour ta réponse.

    Seulement ca ne fonctionne pas. J'ai bien testé sur les controles de la Cellule et non pas de la ligne, et j'ai aussi tenté de passer par une fonction récursive de FindControl, mais je n'obtiens toujours rien.

    Une autre idée?

  4. #4
    Expert confirmé
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Points : 4 066
    Points
    4 066
    Par défaut
    Je n'avais pas fait attention au fait que tu utilisais l'event RowCreated.

    Utilise plutôt l'event OnRowDataBound comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    protected void gridview1_rowdatabound(object sender, GridViewRowEventArgs e)
    { 
      if (e.Row.RowType == DataControlRowType.DataRow)
      { 
        DropDownList ddl = (DropDownList)e.Row.FindControl("maDropDownList");
        ddl.DataSource = mytable;
        ddl.DataTextField = "productname";
        ddl.DataValueField = "productid";
        ddl.DataBind();
      }
    }
    En espérant t'avoir aidé.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 60
    Points : 54
    Points
    54
    Par défaut
    Merci, c'est parfait! Me voila débloqué.

    Bonne journée!

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

Discussions similaires

  1. Erreur 1004 dans le code pour supprimer le contenu d'une cellule
    Par pimpom81 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/08/2012, 17h07
  2. Récupérer l'ID d'un champ contenu dans une iframe
    Par Thibault92 dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 21/02/2012, 11h40
  3. Réponses: 1
    Dernier message: 26/12/2010, 21h20
  4. Récupérer le code HTML de la sélection dans une iFrame
    Par umeboshi dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 26/11/2009, 10h04
  5. Récupérer le chemin contenu dans une cellule
    Par Geprocor dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/06/2008, 15h32

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