我正在使用RadGrid与主/详细表的嵌套层次结构。我想在行内的详细信息表有几行时展开主行。我试图使用下面的代码
来实现相同的目标 Private Sub RadGrid_ItemDataBound(ByVal sender As System.Object, ByVal e As Telerik.Web.UI.GridItemEventArgs) Handles dbgView.ItemDataBound
If <considtion to check if row is expanded>Then
e.Item.Expanded = True
End If
然而,即使将Expanded标志设置为True,如果我在QuickWatch中检查状态的值,它仍然保持为False。有人可以帮助我理解为什么特定行的状态没有改变?如果这不是以编程方式更改状态的正确方法,有人可以让我知道其他方式吗?
答案 0 :(得分:0)
尝试在设置Expanded属性后重新绑定网格,或者只是在Page_Load方法中移动条件。只需确保在更改值后,重新绑定或执行NeedDataSource方法。 希望这些建议有所帮助。
答案 1 :(得分:0)
为了解决这个问题,我使用了两个隐藏的字段
<asp:HiddenField ID="hdnExpandCollapse" Value="0" runat="server" />
<asp:HiddenField ID="hdnExpanded" Value="0" runat="server" />
然后,以下两个网格事件用于捕获网格项的状态
/* Start functions used for collapse the grid */
protected void Grid_PreRender(object sender, EventArgs e)
{
int i = 0;
foreach (GridDataItem item in Grid.MasterTableView.Items)
{
GridTableView DetailsTable = (GridTableView)item.OwnerTableView;
System.Collections.Hashtable ht = DetailsTable.DataKeyValues[i];
string strDataKey= ht["DataKey"].ToString();
if (strDataKey == hdnExpandCollapse.Value)
{
if (hdnExpanded.Value == strDataKey)
{
item.Expanded = false;
hdnExpanded.Value = "0";
}
else
{
item.Expanded = true;
hdnExpanded.Value = strDataKey;
}
}
i++;
}
}
protected void Grid_ItemCommand(object source, Telerik.Web.UI.GridCommandEventArgs e)
{
if (e.CommandName == RadGrid.ExpandCollapseCommandName)
{
hdnExpandCollapse.Value = ((EntityClass)(e.Item.DataItem)).DataKey.ToString();
}
}
/* End functions used for collapse the grid */
回复