我正在使用 Telerik RadGrid 来显示和编辑分层数据。这听起来可能很奇怪——其中一项要求是在单击父行中的链接时,在插入模式下打开子详细信息网格。这需要两件事。子网格的扩展,并以插入模式加载此网格。
到目前为止,这是我使用 Telerik 文档中的建议所尝试的;但是,当调用 rebind 说子详细信息网格找不到它的 linqDataSourceControl 时,这不起作用并引发异常;但是,当下面的代码正在执行时,这个控件确实存在(我检查过)。
从父行命令按钮以插入模式打开子 DetailGridView 的解决方案是什么?
标记:
...
<DetailTables>
<telerik:GridTableView>
...
<Columns>
<ItemTemplate>
<asp:LinkButton ID="addChildVendorRating" runat="server" CommandName="AddNewChildRating" CausesValidation="false" CssClass="normal-link" CommandArgument='<%# Eval("VendorM2MEntityToQualID")%>'>[Add Rating]</asp:LinkButton>
</ItemTemplate>
</Columns>
<DetailTables>
<!-- I Need this to be be expanded and in insert mode when addChildVendorRating command link is clicked -->
<telerik:GridTableView>
</<DetailTables>
代码:
protected void gridRatings_ItemCommand(object sender, Telerik.Web.UI.GridCommandEventArgs e)
{
if (e.CommandName == "AddNewChildRating") {
GridDataItem parentRow = e.Item as GridDataItem;
GridTableView parentGridView = parentRow.GetClosestParentControlByType<GridTableView>();
RadGrid parentGrid = parentGridView.GetClosestParentControlByType<RadGrid>();
parentRow.Expanded = true;
//parentGridView.HierarchyDefaultExpanded = true;
//parentGridView.DetailTables[0].InsertItem();
parentGridView.DetailTables[0].IsItemInserted = true;
parentGridView.DetailTables[0].Rebind();
}
}