576 messaggi dal 30 aprile 2003
Ciao a tutti

Ho creato una struttura master-detail con 2 datagrid annidati. Ogni volta che cambio pagina, però, vengono create 20 colonne vuote in più al datagrid: questo perché l'evento ItemDataBound (dove aggiungo il datagrid figlio al padre, come nuova colonna) è richiamato a ogni DataBind, e purtroppo ho bisogno del DataBind anche nel PageIndexChanged, per un corretto refresh dei dati a ogni cambio pagina.
Questo è il mio codice (ho scritto le 2 query per i datagrid nel Page_Load):
private void dataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
            {
                  dataGrid1.CurrentPageIndex = e.NewPageIndex;
                  dataGrid1.DataSource = ds;
                  dataGrid1.DataKeyField = "ID";
                  dataGrid1.DataBind();
            }

            private void dataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
            {
                  if(e.Item.ItemType == ListItemType.Item ||
                  e.Item.ItemType == ListItemType.AlternatingItem)
                  {
                        DataGrid dataGrid2 = new DataGrid();
                        dataGrid2.ShowHeader = false;
                        dataGrid2.BorderWidth = 0;
                        dataGrid2.Width = Unit.Percentage(100);
                        dataGrid2.AutoGenerateColumns = false;
                        BoundColumn bc = new BoundColumn();
                        bc.DataField = "DETAILS";
                        bc.ItemStyle.Wrap = false;
                        dataGrid2.Columns.Add(bc);
                        DataView _dett = ds.Tables["details"].DefaultView;
                        _dett.RowFilter = "ID=" + e.Item.Cells[2].Text;
                        dataGrid2.DataSource = _dett;
                        dataGrid2.DataBind();
                        BoundColumn c = new BoundColumn();
                        c.HeaderText = "DETAILS";
                        c.ItemStyle.Wrap = false;
                        dataGrid1.Columns.Add(c);
                        e.Item.Cells[e.Item.Cells.Count-1].Controls.Add(dataGrid2);
                  }
            }

C'è qualcuno in grado di darmi una mano? Sono veramente nel buio più totale...
Grazie!

Prima o poi diventerò un guru!
576 messaggi dal 30 aprile 2003
P.S. per favore non mandatemi links a esempi di codice: ho bisogno di mantenere questo approccio (creazione dinamica del datagrid figlio) per tutta una serie di problematiche. Grazie!

Prima o poi diventerò un guru!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.