Hi to all,
I am trying to define heirarchy in radgrid programmatically. I am able to get it at the first level and not after that. Here is what I have done:
At the second level I am getting the exception "Index out of range". Please assist me....
cheers
rohan
I am trying to define heirarchy in radgrid programmatically. I am able to get it at the first level and not after that. Here is what I have done:
private void BindData() { clickedType = Session["type"].ToString(); int id = ParentEntity.ParentEntityId; GridTableView tableView = new GridTableView(grv); switch (clickedType) { case "All Categories": using (SpaceCategoriesService.SpaceCategoriesServiceClient s = new SpaceCategoriesService.SpaceCategoriesServiceClient()) { grv.DataSource = s.GetCategoryTable(); tableView.Name = "Buildings"; tableView.DataMember = "Buildings"; } break; case "SpaceCategories": using (SpaceBuildingsService.SpaceBuildingsServiceClient s = new SpaceBuildingsService.SpaceBuildingsServiceClient()) { grv.DataSource = s.GetBuildingByCategoryId(id); tableView.Name = "Floors"; tableView.DataMember = "Floors"; } break; case "SpaceBuildings": using (SpaceFloorService.SpaceFloorServiceClient s = new SpaceFloorService.SpaceFloorServiceClient()) { grv.DataSource = s.GetFloorsByBuildingId(id); tableView.Name = "Rooms"; tableView.DataMember = "Rooms"; } break; case "SpaceFloors": using (SpaceRoomService.SpaceRoomServiceClient s = new SpaceRoomService.SpaceRoomServiceClient()) { grv.DataSource = s.GetRoomByFloorId(id); } break; default: throw new Exception("Unable to identify Entity."); } grv.MasterTableView.DetailTables.Clear(); grv.MasterTableView.DetailTables.Add(tableView); grv.DataBind(); foreach (GridDataItem item in grv.Items) { if (tableView.Name != "") { LinkButton lnkExpand = (LinkButton)grv.Items[item.ItemIndex].FindControl("lnkExpand"); lnkExpand.Text = "Show " + tableView.Name; } } GridTableView tab = new GridTableView(grv); tab.DataMember = "Rooms"; tab.Name = "Rooms"; tableView.DetailTables.Clear(); tableView.DetailTables.Add(tab); } protected void grv_DetailTableDataBind(object sender, GridDetailTableDataBindEventArgs e) { try { GridDataItem dataItem = (GridDataItem)e.DetailTableView.ParentItem; string datamem = e.DetailTableView.DataMember; if (!string.IsNullOrEmpty(e.DetailTableView.DataMember)) { switch (e.DetailTableView.DataMember) { case "Buildings": int CategoryID = int.Parse(dataItem.GetDataKeyValue("Id").ToString()); DataTable buildings; using (SpaceBuildingsService.SpaceBuildingsServiceClient s = new SpaceBuildingsService.SpaceBuildingsServiceClient()) { buildings = s.GetBuildingByCategoryId(CategoryID); } e.DetailTableView.DataSource = buildings; break; case "Floors": int BuildingID = int.Parse(dataItem.GetDataKeyValue("Id").ToString()); DataTable floors; using (SpaceFloorService.SpaceFloorServiceClient s = new SpaceFloorService.SpaceFloorServiceClient()) { floors = s.GetFloorsByBuildingId(BuildingID); } e.DetailTableView.DataSource = floors; break; case "Rooms": int FloorID = int.Parse(dataItem.GetDataKeyValue("Id").ToString()); DataTable rooms; using (SpaceRoomService.SpaceRoomServiceClient s = new SpaceRoomService.SpaceRoomServiceClient()) { rooms = s.GetRoomByFloorId(FloorID); } e.DetailTableView.DataSource = rooms; break; default: break; } } } catch (Exception ee) { string asd = ee.Message; //throw new Exception("Unable to load!"); } }At the second level I am getting the exception "Index out of range". Please assist me....
cheers
rohan