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