Hi,
I am creating a dynamic nested grid to replicate grid displayed in following site.
http://demos.telerik.com/aspnet-ajax/grid/examples/hierarchy/nestedviewtemplate/defaultcs.aspx
When I expand an item in child grid to display grandChild grid, the nestedview template on top level is empty and I lose all controls. How can I persist nested grids on post back.
Here is my code to create root grid, child grid is also created with same logic.
1.
protected void Page_Init(object source, System.EventArgs e)
{
try
{
RadGrid rootGrid = CreateDynamicGrid("Ticket");
NGridPlaceHolder.Controls.Add(rootGrid);
}
catch(Exception ex)
{
WIMProject.ShowMessageBox(ex.ToString());
}
}
2.
public RadGrid CreateDynamicGrid(string tableName)
{
RadGrid radGrid = new RadGrid();
try
{
radGrid.ID = tableName + "_RootGrid";
radGrid.AutoGenerateColumns = true;
radGrid.PageSize = 20;
radGrid.MasterTableView.AllowPaging = true;
radGrid.PagerStyle.Mode = GridPagerMode.NextPrevAndNumeric;
radGrid.MasterTableView.DataKeyNames = new string[] {"ID" };
radGrid.MasterTableView.HierarchyLoadMode = GridChildLoadMode.ServerOnDemand;
radGrid.MasterTableView.TableLayout = GridTableLayout.Auto;
radGrid.MasterTableView.NestedViewTemplate = new NestedGridTemplate();
radGrid.ItemCommand += new GridCommandEventHandler(radGrid_ItemCommand);
radGrid.ItemDataBound += new GridItemEventHandler(radGrid_ItemDataBound);
radGrid.NeedDataSource += new GridNeedDataSourceEventHandler(radGrid_NeedDataSource);
.........}
3.
void radGrid_ItemDataBound(object sender, GridItemEventArgs e)
{
string gridID = e.Item.OwnerID;
string tableName = gridID.Replace("_RootGrid", "");
if (e.Item.GetType() == typeof(GridDataItem) && e.Item.Expanded)
{
GridDataItem currentDataItem = (e.Item as GridDataItem);
string selectedRowID = currentDataItem.GetDataKeyValue("ID").ToString();
Panel currentPanel = new Panel();
currentPanel.CssClass = "GridWrapperPanel";
NestedGridTemplate nestedGridTemplate = new NestedGridTemplate();
nestedGridTemplate.CreateTabStrip(tableName, currentPanel, selectedRowID);
(currentDataItem as GridDataItem).ChildItem.NestedViewCell.Controls.Add(currentPanel);
}
}
Thanks,
Prava
I am creating a dynamic nested grid to replicate grid displayed in following site.
http://demos.telerik.com/aspnet-ajax/grid/examples/hierarchy/nestedviewtemplate/defaultcs.aspx
When I expand an item in child grid to display grandChild grid, the nestedview template on top level is empty and I lose all controls. How can I persist nested grids on post back.
Here is my code to create root grid, child grid is also created with same logic.
1.
protected void Page_Init(object source, System.EventArgs e)
{
try
{
RadGrid rootGrid = CreateDynamicGrid("Ticket");
NGridPlaceHolder.Controls.Add(rootGrid);
}
catch(Exception ex)
{
WIMProject.ShowMessageBox(ex.ToString());
}
}
2.
public RadGrid CreateDynamicGrid(string tableName)
{
RadGrid radGrid = new RadGrid();
try
{
radGrid.ID = tableName + "_RootGrid";
radGrid.AutoGenerateColumns = true;
radGrid.PageSize = 20;
radGrid.MasterTableView.AllowPaging = true;
radGrid.PagerStyle.Mode = GridPagerMode.NextPrevAndNumeric;
radGrid.MasterTableView.DataKeyNames = new string[] {"ID" };
radGrid.MasterTableView.HierarchyLoadMode = GridChildLoadMode.ServerOnDemand;
radGrid.MasterTableView.TableLayout = GridTableLayout.Auto;
radGrid.MasterTableView.NestedViewTemplate = new NestedGridTemplate();
radGrid.ItemCommand += new GridCommandEventHandler(radGrid_ItemCommand);
radGrid.ItemDataBound += new GridItemEventHandler(radGrid_ItemDataBound);
radGrid.NeedDataSource += new GridNeedDataSourceEventHandler(radGrid_NeedDataSource);
.........}
3.
void radGrid_ItemDataBound(object sender, GridItemEventArgs e)
{
string gridID = e.Item.OwnerID;
string tableName = gridID.Replace("_RootGrid", "");
if (e.Item.GetType() == typeof(GridDataItem) && e.Item.Expanded)
{
GridDataItem currentDataItem = (e.Item as GridDataItem);
string selectedRowID = currentDataItem.GetDataKeyValue("ID").ToString();
Panel currentPanel = new Panel();
currentPanel.CssClass = "GridWrapperPanel";
NestedGridTemplate nestedGridTemplate = new NestedGridTemplate();
nestedGridTemplate.CreateTabStrip(tableName, currentPanel, selectedRowID);
(currentDataItem as GridDataItem).ChildItem.NestedViewCell.Controls.Add(currentPanel);
}
}
Thanks,
Prava