begin process at 2012 05 28 12:29:26
  Trouver un code source :
 
dans
 
Accueil > Forum > 

ASP.NET

 > 

WebForms

 > 

PostBack

 > 

Récupérer la valeur d'un dropdownlist créer dynamiquement dans un gridview


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Récupérer la valeur d'un dropdownlist créer dynamiquement dans un gridview

lundi 6 septembre 2010 à 14:09:15 | Récupérer la valeur d'un dropdownlist créer dynamiquement dans un gridview

laurent19


Bonjour,

Voilà, je rencontre un petit soucis dans le développement de ma page web.
Voici ce que je cherche à obtenir.
Je récupère d'une base de données divers informations liés à des utilisateurs.
je renseigne un gridview avec ces infos
Chaque utilisateur à une ligne dans ce gridview qui peut contenir une ou plusieurs infos dans une seul colonne. ex:
User 1 | Group | CC UK | Edit
| Country | UK |
------------------------
User 2 | Country | FR | Edit
------------------------
Etc...
Un user = 1 ligne(row) dans le grid view.
Au bout de chaque ligne, les boutons delete/edit
lors d'un edit, je modifie la colonne des infos en remplaçant les label qui les contient par un dropdownlist (modification faite dans mon RowDataBound uniquement pour la ligne sélectionnée). Chaque liste déroulante est independante des autres.
Pour créer ces dropdownlist dynamiquement, je les créé (new dropwonlist) dans un placeholder placé dans le EditTemplate de mon gridview.

problème rencontré: lors de mon RowUpdating, il ne retrouve pas les éléments contenus dans mon placeholder, ni aucune des valeurs sélectionner dans les dropdownlist.(element is null)

J'ai donc contourner ça en créant une arraylist dans laquelle j'insère mes dropdownlist.
Dans le databound de mon grid view, je renseigne les placeholders de mes cellules editer avec les dropdownlist nécessaire.
J'en profite pour placer le curseur des dropdownlist sur une valeur remonté de la base de données.

Truc amusant mais chi%%t, le rowupadating du datagrid, retrouve bien le dropdownlist mais avec la valeur sélectionnée lors du databound et non pas celle sélectionnée par l'utilisateur.
J'ai l'impression que lors du databound, il met à jour le dropdownlist de l'array list et renvoi celui ci lors de l'update de la ligne.

Voici une partie du code:
Code ASP.NET :
protected void gvwExistingRight_RowDataBound(object sender, GridViewRowEventArgs e)
    {
      //if (e.Row.RowType == DataControlRowType.DataRow && (e.Row.RowState & DataControlRowState.Edit) == DataControlRowState.Edit)
      if (e.Row.RowType == DataControlRowType.DataRow)
      {
 
        PlaceHolder phrGridObject = (PlaceHolder)e.Row.FindControl("phrGridObject");
        PlaceHolder phrGridValue = (PlaceHolder)e.Row.FindControl("phrGridValue");
 
        if (phrGridObject != null && phrGridValue != null)
        {
          DataTable tableFactObj = new DataTable();
 
          Label lblAppliId = (Label)e.Row.FindControl("lblAppId");
          Label lblRuleId = (Label)e.Row.FindControl("lblRuleId");
 
          string stringfunction = "SELECT F.OBJ_ID,O.OBJ_LBL_ID, O.OBJ_DDL_ID, VAL_ID FROM GAP_DAT_FACT F, GAP_REF_OBJECT O WHERE USR_ID = '" + hfdUserId.Value + "' AND F.[APP_ID]='" + lblAppliId.Text + "' AND FAC_RULE_ID ='" + lblRuleId.Text + "' AND F.OBJ_ID = O.OBJ_ID ORDER BY F.OBJ_ID";
          SqlDataReader rdr = CreateReader(stringfunction);
          tableFactObj.Load(rdr);
          rdr.Close();
        
          foreach (DataRow r in tableFactObj.Rows)
          {
 
            foreach (Object o in ArrayListObjectDdl)
            {  
              DropDownList dropdownlistAttribut = o as DropDownList;
              if (dropdownlistAttribut.ID == r[2].ToString())
              {
                dropdownlistAttribut.SelectedValue = r[3].ToString();
                Literal literal2 = new Literal();
                literal2.Text = "<br />";
                phrGridValue.Controls.Add(dropdownlistAttribut);
                phrGridValue.Controls.Add(literal2);
 
              }
            }
          }
          tableFactObj.Dispose();
          tableFactObj.Reset();
        }
        
      }
    }
 
 protected void gvwExistingRight_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
 
      DataTable tableFactObj = new DataTable();
 
      Label lblAppId = (Label)gvwExistingRight.Rows[e.RowIndex].FindControl("lblAppId");
      Label lblRuleId = (Label)gvwExistingRight.Rows[e.RowIndex].FindControl("lblRuleId");
 
      string stringfunction = "SELECT F.OBJ_ID, O.OBJ_DDL_ID, F.VAL_ID FROM GAP_DAT_FACT F, GAP_REF_OBJECT O WHERE USR_ID = '" + hfdUserId.Value + "' AND F.[APP_ID]='" + lblAppId.Text + "' AND FAC_RULE_ID ='" + lblRuleId.Text + "' AND F.OBJ_ID = O.OBJ_ID ORDER BY F.OBJ_ID";
      SqlDataReader rdr = CreateReader(stringfunction);
      tableFactObj.Load(rdr);
      rdr.Close();
 
      foreach (DataRow r in tableFactObj.Rows)
      {
 
        foreach (Object o in ArrayListObjectDdl)
        {
          DropDownList dropdownlistAttribut = o as DropDownList;
          
          if (dropdownlistAttribut.ID == r[1].ToString() && dropdownlistAttribut.SelectedValue != r[2].ToString())
          {
            TextBox tbxCalGridrStart = (TextBox)gvwExistingRight.Rows[e.RowIndex].FindControl("tbxCalGridrStart"); //textbox Start Date
            TextBox tbxCalGridrEnd = (TextBox)gvwExistingRight.Rows[e.RowIndex].FindControl("tbxCalGridrEnd");   //textbox End Date
            String UpdateDate = DateTime.Today.Year + "-" + DateTime.Today.Month + "-" + DateTime.Today.Day;    // Mettre ici la date de mise a jour
 
            stringfunction = UpdateFact(hfdUserId.Value, lblAppId.Text.ToString(), lblRuleId.Text.ToString(), r[0].ToString(), dropdownlistAttribut.SelectedValue.ToString(), tbxCalGridrStart.Text.ToString(), tbxCalGridrEnd.Text.ToString(), UpdateDate);
            SqlDataReader Fac_id = CreateReader(stringfunction);
            Fac_id.Read();
            stringfunction = LogInsertFact(Fac_id[0].ToString(), "UPDATE");
            InsertReader(stringfunction);
          }
        }
      }
      tableFactObj.Dispose();
      tableFactObj.Reset();
 
      gvwExistingRight.EditIndex = -1;
      LoadDataGrid(hfdUserId.Value);
    }

La question serai donc:

Comment mettre à jour l'arraylist avec la valeur sélectionnée par l'utilisateur puis mettre à jour la table en cliquant sur le rowupdating ?

Ou Plus simple, comment récupérer la valeur sélectionnée par l'utilisateur sans que cela ne mettent à jour l'arraylist ?

Voilà, si vous avez la moindre piste à me donner, cela m'aiderai beaucoup.

En vous remerciant par avance.

&lt;--- Sore wa himitsu desu ---&gt;
mardi 7 septembre 2010 à 10:11:24 | Re : Récupérer la valeur d'un dropdownlist créer dynamiquement dans un gridview

laurent19

Réponse acceptée !

C'est bon, j'ai trouvé,

Merci à ceux qui ont cherché.
J'utilise un repeater dans mon DataBound de cette façon:
Code C# :
Repeater rprGridView = (Repeater)e.Row.FindControl("rprGridView");
// permet de créer une collection d'entier quiservira de datasource [0, ..., n]
                    IEnumerable<int> data = Enumerable.Range(0, tableFactObj.Rows.Count);
                    rprGridView.DataSource = data;
                    rprGridView.DataBind();
int loop = 0;
                        foreach (RepeaterItem item in rprGridView.Items)
                        {
                            if (parseObject == loop)
                            {
                                if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem)
                                {
                                    DropDownList ddlRepeater = item.FindControl("ddlRepeater") as DropDownList;
                                    stringfunction = GetFildList(r[0].ToString());
                                    rdr = CreateReader(stringfunction);
                                    rdt.Load(rdr);
                                    rdr.Close();
 
                                    HiddenField hfdRepeater = item.FindControl("hfdRepeater") as HiddenField;
                                    hfdRepeater.Value = r[2].ToString();
 
                                    //Insertion des valeurs dans la ddl
                                    ddlRepeater.DataSource = CreateDataView2();
                                    ddlRepeater.DataTextField = "TextField";
                                    ddlRepeater.DataValueField = "ValueField";
                                    ddlRepeater.DataBind();
                                    ddlRepeater.Visible = true;
                                    ddlRepeater.SelectedValue = r[3].ToString();
 
                                    rdt.Dispose();
                                    rdt.Reset();
                                }                                
                            }
                            loop += 1;                            
                        }
                        parseObject += 1;

Et hop ca marche.
C'est magique ce truc !!

&lt;--- Sore wa himitsu desu ---&gt;


Cette discussion est classée dans : id, dropdownlist, obj, tostring, tablefactobj


Répondre à ce message

Sujets en rapport avec ce message

Dropdownlist comment initialiser? [ par Raugues ] bonjourmon dropdowlist est instentié sans probleme, il est basé sur une table dans un sgbd.en fonction d'une valeur d'ID venant d'une requete, je veux help checkbox !!! [ par Poulipe ] Bonjour,je cree des checkbox dynamiquement mais je n arrive pas a recuperer si elles sont cliquee, et ce a chaque clic sur l une d elle...Qqun peut il Construction Dynamique de multiples Dropdownlist [ par angelflo18 ] Bonjour à tous et par avance un grand merci pour toute l'aide que vous pourrez m'apporter !Nouveau venu dans le monde .NET, et après de multiples rech remplir dropdown list dans detailsview [ par ghameau ] bonjourj'ai une detail view dans laquellej'ai transformé un champ ID en template field pour y mettre une dropdown listj'aimerais remplire au page_load Comment passer ma valeur de DropDownList à mon Datasource? [ par vinzemuls ] Bonjour,Voilà j'ai une DropDownlist qui est relié à ma base de donnée. Je souhaite transmettre à ma requete la valeur que je sélectionne pour y faire DropDownList [ par shambu ] Bonjour,Il y a quelque chose que je en comrpends pas à propos des DropDownListSi je fais une liaison telle que:             DropDownList1.DataSource = demande d'aide [ par Samly ] Bonjour mes cheres programmeurs,J'ai un probleme de savoir comment gerer deux Dropdownlist. C'est à dire que je veux que lorsque je choisi dans le pre Comment récuper L'ID caché d'un DropDownList [ par arthur007 ] Bonjous à tous,Voila, j'ai cherché un peu par tous et j'ai essayé un peu toutes les methodes du control de DrropDownList, mais je n'ai pas réusi à tro Pas de contenu dans un gridview alimenté par une dropdownlist [ par Goldeneye007 ] Bonjour,Voilà j'ai une dropdownlst qui donne le nom du materiel, et je voudrai qu'apparaisse dans un gridview les consommables qui utilise, je précise DropDownList et Paramètre ASP.NET [ par 76julien ] Bonjour à tous !!Mon probleme est un probleme de passage de paramètre dans l'URL...J'ai un DropDownList qui est alimenté en dynamique grace à une requ


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,671 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales