Hi,
I hava create a RadGrid to Bind something using DetailsTable , set the AutoGenerateColumns as true .
It display well at first time , but when I Rebind the datasource(the columns is not as same as the first) , The Columns of DetailsTable don't change .
The Code like below :
1.aspx:
2.cs:
========
The code is easy , but it cant do best for me
I hava create a RadGrid to Bind something using DetailsTable , set the AutoGenerateColumns as true .
It display well at first time , but when I Rebind the datasource(the columns is not as same as the first) , The Columns of DetailsTable don't change .
The Code like below :
1.aspx:
<div> |
<asp:DropDownList ID="DropDownList1" runat="server" onselectedindexchanged="DropDownList1_SelectedIndexChanged" AutoPostBack="true"> |
<asp:ListItem Value="1" Text="MoreParams"></asp:ListItem> |
<asp:ListItem Value="0" Text="LessParams" ></asp:ListItem> |
</asp:DropDownList> |
<rad:RadGrid ID="rgBug" runat="server" AutoGenerateColumns="true" ondetailtabledatabind="rgBug_DetailTableDataBind" onneeddatasource="rgBug_NeedDataSource" > |
<ClientSettings AllowExpandCollapse="true"></ClientSettings> |
<MasterTableView HierarchyDefaultExpanded="true" HierarchyLoadMode="Client"> |
<DetailTables> |
<rad:GridTableView runat="server"></rad:GridTableView> |
</DetailTables> |
</MasterTableView> |
</rad:RadGrid> |
</div> |
2.cs:
protected DataTable LessDataTable() |
{ |
DataTable dt = new DataTable(); |
DataColumn dc = new DataColumn(); |
dc.Caption = "ID"; |
dc.ColumnName = "ID"; |
DataColumn dc2 = new DataColumn(); |
dc2.Caption = "Name"; |
dc2.ColumnName = "Name"; |
dt.Columns.Add(dc); |
dt.Columns.Add(dc2); |
DataRow row = dt.NewRow(); |
row[0] = 1; |
row[1] = "Bruce Lee"; |
dt.Rows.Add(row); |
return dt; |
} |
protected DataTable MoreDataTable() |
{ |
DataTable dt = new DataTable(); |
DataColumn dc = new DataColumn(); |
dc.Caption = "ID"; |
dc.ColumnName = "ID"; |
DataColumn dc2 = new DataColumn(); |
dc2.Caption = "Name"; |
dc2.ColumnName = "Name"; |
DataColumn dc3= new DataColumn(); |
dc3.Caption = "Age"; |
dc3.ColumnName = "Age"; |
dt.Columns.Add(dc); |
dt.Columns.Add(dc2); |
dt.Columns.Add(dc3); |
DataRow row = dt.NewRow(); |
row[0] = 1; |
row[1] = "Hyden Panetieer"; |
row[2] = 23; |
dt.Rows.Add(row); |
return dt; |
} |
protected void rgBug_NeedDataSource(object source, Telerik.WebControls.GridNeedDataSourceEventArgs e) |
{ |
if (DropDownList1.SelectedIndex != 0) |
rgBug.DataSource = LessDataTable(); |
else |
rgBug.DataSource = MoreDataTable(); |
} |
protected void rgBug_DetailTableDataBind(object source, Telerik.WebControls.GridDetailTableDataBindEventArgs e) |
{ |
if (DropDownList1.SelectedIndex != 0) |
e.DetailTableView.DataSource = LessDataTable(); |
else |
e.DetailTableView.DataSource = MoreDataTable(); |
} |
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) |
{ |
rgBug.Rebind(); |
} |
========
The code is easy , but it cant do best for me