Datagrid annidati e paging

martedì 06 marzo 2007 - 13.02

ducky Profilo | Junior Member

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!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5