I have a master detail grid. For the master grid, I use NeedDataSource. In addtion, on the ItemDatabound event, I modify some of the columns (ex. I hide some of the command buttons for some rows).
When a row is expanded and DetailTableDataBind is fired, the detail table renders fine. However, the modifications made to the parent table above via ItemDatabound are lost. It is as if I need to rebind my parent table. Have been unable to do that, though without losing my detail table view.
I posted the relevant code below. Any help would be greatly appreciated. Thanks, Rick
When a row is expanded and DetailTableDataBind is fired, the detail table renders fine. However, the modifications made to the parent table above via ItemDatabound are lost. It is as if I need to rebind my parent table. Have been unable to do that, though without losing my detail table view.
I posted the relevant code below. Any help would be greatly appreciated. Thanks, Rick
void afterGrid_DetailTableDataBind(object sender, GridDetailTableDataBindEventArgs e)
{
var dataItem = e.DetailTableView.ParentItem;
var memberId = dataItem.GetDataKeyValue("Id").ToString().ToInteger();
using (var db = new DataContext())
{
var toBind = //retrieves the data
e.DetailTableView.DataSource = toBind;
}
}
void afterGrid_ItemDataBound(object sender, GridItemEventArgs e)
{
//Answers is name of detail data
if (e.Item is GridDataItem && e.Item.OwnerTableView.Name != "Answers")
{
var item = (GridDataItem)e.Item;
var cell = item["Remind"];
if (cell.IsNotNull())
{ //dont send if already submitted
var data = (ReviewMember)item.DataItem;
if (data.SubmitDate.HasValue)
{
cell.Controls.Clear();
}
else if (data.LastSavedDate.HasValue )
{
cell.Controls.Clear();
cell.Text = "Sent";
}
}
}
else if (e.Item is GridDataItem && e.Item.OwnerTableView.Name == "Answers")
{
var item = (GridDataItem)e.Item;
var data = (MemberResult)item.DataItem;
var cell = item["Attach"];
if (data.Question.Type != QuestionTypes.Upload)
{
cell.Controls.Clear();
}
}
}
void afterGrid_ItemCommand(object sender, GridCommandEventArgs e)
{
if (e.CommandName.Equals("Remind"))
{
//do some work
afterGrid.Rebind();
}
else if (e.CommandName == RadGrid.ExpandCollapseCommandName)
{
foreach (GridItem item in e.Item.OwnerTableView.Items)
{
if (item.Expanded && item != e.Item)
{
item.Expanded = false;
}
}
}
}