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