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.
Community
Ultimi messaggi
UTENTI ONLINE
    In primo piano

    I più letti di oggi

    Media
    In evidenza
    MISC