Datagrid crée en code-behind et mode édition

zoullou007 Messages postés 11 Date d'inscription dimanche 2 avril 2006 Statut Membre Dernière intervention 16 janvier 2009 - 7 oct. 2008 à 16:46
ggtry Messages postés 417 Date d'inscription vendredi 13 juin 2008 Statut Membre Dernière intervention 21 juillet 2010 - 7 oct. 2008 à 20:56

2 réponses

zoullou007 Messages postés 11 Date d'inscription dimanche 2 avril 2006 Statut Membre Dernière intervention 16 janvier 2009
7 oct. 2008 à 16:56
Bonjour,

Désolé il y a eu un petit problème dans l'envoi du message.

Donc je viens en espérant que quelqu'un pourra m'aider.
J'essaye d'avoir une page ou j'ajoute en code-behind des datagrid attaché à des datatables elles aussi créés dynamiquement. Jusque la j'ai réussi, la ou je coince c'est que je voudrais pouvoir utiliser le mode édition des datagrid, j'ai donc ajouté une "EditCommandColumn" à mes datagrid et j'ai attaché une méthode à l'évènement UpdateCommand. Dans celle ci j'ajoute des textbox dans la ligne ou l'édition à été demandé. mais lors du postBack je ne retrouve pas les données rentrées par l'utilisateur.
Je pense donc à un problème de  cycle de vie mais je ne vois pas où.

voici mon bout de code
<hr size="2" width="100%" />      protected void Page_Init(object sender, EventArgs e)
        {
                DataSetTableTableAdapters.IDOC_STRUCTTableAdapter adapt =
                                          new TestAdministrationSAP.DataSetTableTableAdapters.IDOC_STRUCTTableAdapter();
                TestAdministrationSAP.DataSetTable.IDOC_STRUCTDataTable table ;
                table = adapt.GetDataByTables_Struct("I407%");
               
                DataSet dataOfIDOC = new DataSet();
                foreach (TestAdministrationSAP.DataSetTable.IDOC_STRUCTRow name in table.Rows)
                {
                    Oracle.DataAccess.Client.OracleDataAdapter orAdapter =
                        new Oracle.DataAccess.Client.OracleDataAdapter("SELECT * FROM " + name.NOM_TABLE,
                                        System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionStringSAP"].ConnectionString);
                    orAdapter.Fill(dataOfIDOC, name.NOM_TABLE);
                }

                Hashtable nomIndex = new Hashtable();

                foreach (DataTable dt in dataOfIDOC.Tables)
                {
                    DataGrid dg = CreateDataGrid(dt);
                    if (table.Where(o => o.NOM_TABLE == dt.TableName).FirstOrDefault()["ID_PERE"] == DBNull.Value)
                    {
                        Panel pan = new Panel();
                        pan.ID = dt.TableName + "pan";
                       pan.CssClass = "space";

                       Label nom = new Label();
                        nom.ID = dt.TableName+"lb";
                        nom.Text = dt.TableName;

                        CollapsiblePanelExtender collapse = new CollapsiblePanelExtender();
                        collapse.TargetControlID = pan.ID;
                        collapse.ID = dt.TableName + "collapse";
                        collapse.ExpandControlID = nom.ID;
                        collapse.CollapseControlID = nom.ID;

                        this.Panel1.Controls.Add(collapse);
                        pan.Controls.Add(dg);
                        this.Panel1.Controls.Add(nom);
                        this.Panel1.Controls.Add(pan);
                        nomIndex.Add(dt.TableName, pan);
                    }
                    else
                    {
                   
                        string id_pere table.Where(o> o.NOM_TABLE == nom.Text).FirstOrDefault().ID_PERE;
                        string name = table.Where(o=> o.ID_TABLE == id_pere).FirstOrDefault().NOM_TABLE;
                        ((Panel)nomIndex[name]).Controls.Add(nom);
                     
                        Panel pan = new Panel();
                        pan.ID = dt.TableName + "pan";
                        pan.CssClass = "space";

                        Label nom = new Label();

                        nom.Text = dt.TableName;
                        nom.ID = dt.TableName+"lb";

                        CollapsiblePanelExtender collapse = new CollapsiblePanelExtender();
                        collapse.TargetControlID = pan.ID;
                        collapse.ID = dt.TableName + "collapse";       
                        collapse.ExpandControlID = nom.ID;
                        collapse.CollapseControlID = nom.ID;

                        pan.Controls.Add(dg);
                       ((Panel)nomIndex[name]).Controls.Add(pan);
                       this.Panel1.Controls.Add(collapse);
                        nomIndex.Add(dt.TableName, pan);
                    }
                }
                #endregion
        }

        private DataGrid CreateDataGrid(DataTable dt)
        {
            DataGrid dg = new DataGrid();
            dg.ID = dt.TableName + "dg";
          
            dg.DataSource = dt;
               EditCommandColumn editColumn = new EditCommandColumn();
                editColumn.ButtonType = ButtonColumnType.LinkButton;
                editColumn.CancelText = "Annuler";
                editColumn.EditText = "Editer";
                editColumn.HeaderText = "Editer";
                editColumn.UpdateText = "Sauver";
                dg.CancelCommand += GridView_RowEditing;
                dg.UpdateCommand += GridView_RowEditing;
                dg.DataKeyField = "ID";
                dg.Columns.Add(editColumn);
            dg.DataBind();
            dg.EditCommand += GridView_RowEditing;
            return dg;
        }

        protected void GridView_RowEditing(object sender, DataGridCommandEventArgs e)
        {
            if (e.CommandName == "Edit"){
               
                for (int i = 1; i < e.Item.Cells.Count; i++)
                {
                    ((DataGrid)e.Item.NamingContainer).EditItemIndex = e.Item.ItemIndex;
                    TextBox t = new TextBox();
                    t.ID = e.Item.Cells[i].ID + "txt"+i;
                    t.Text = e.Item.Cells[i].Text;
                    e.Item.Cells[i].Controls.Add(t);
                }
           
           
            }
        }
<hr size="2" width="100%" /> Merci d'avance et encore désolé pour le message vide
0
ggtry Messages postés 417 Date d'inscription vendredi 13 juin 2008 Statut Membre Dernière intervention 21 juillet 2010 1
7 oct. 2008 à 20:56
Bonsoir,

D'après ce que tu montres, ne manque-t-il pas l'update sql pour la mise à jour de ta table ?

GGtry
0
Rejoignez-nous