Ajax Radgrid从父行命令按钮在插入模式下打开/展开子DetailGridView

Ajax Radgrid从父行命令按钮在插入模式下打开/展开子DetailGridView,ajax,insert,telerik,radgrid,Ajax,Insert,Telerik,Radgrid,我使用Telerik RadGrid显示和编辑分层数据。听起来很奇怪-其中一个要求是在单击父行中的链接时,在插入模式下打开子详细信息网格。这需要两件事。展开子网格,并以插入模式加载此网格 这就是我迄今为止使用Telerik文档中的建议所做的尝试;但是,这不起作用,当调用rebind时抛出异常,表示子细节网格找不到其linqDataSourceControl;但是,当下面的代码正在执行时,该控件确实存在(我已选中) 从父行命令按钮以插入模式打开子DetailGridView的解决方案是什么 标记:

我使用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>
。。。
...
[添加评级]

我知道了,希望这能帮助其他人。解决方案是将命令处理程序e.Item强制转换为
GridDataItem
;这使您可以访问
嵌套表视图
——这是谜题的关键。这是实际与数据连接的详细视图,与
DetailTables
不同。一旦你在上面设置了
IsItemInserted
,然后重新绑定,一切都会像魅力一样工作

这允许您一次展开一个节并将子节置于插入模式。下面是完整的代码

    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>();

                    if (parentGridView != null)
                    {
                        var targetGridView = ((GridDataItem)e.Item).ChildItem.NestedTableViews[0];
                        if (targetGridView != null)
                        {
                            parentRow.Expanded = true;
                            targetGridView.IsItemInserted = true;
                            targetGridView.Rebind();
                        }
                    }

}
protectedvoid gridRatings\u ItemCommand(对象发送方,Telerik.Web.UI.GridCommandEventArgs e)
{
如果(e.CommandName==“AddNewChildRating”){
GridDataItem parentRow=e.项作为GridDataItem;
GridTableView parentGridView=parentRow.GetClosestParentControlByType();
if(parentGridView!=null)
{
var targetGridView=((GridDataItem)e.Item).ChildItem.NestedTableViews[0];
if(targetGridView!=null)
{
parentRow.Expanded=true;
targetGridView.IsItemInserted=true;
targetGridView.Rebind();
}
}
}
    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>();

                    if (parentGridView != null)
                    {
                        var targetGridView = ((GridDataItem)e.Item).ChildItem.NestedTableViews[0];
                        if (targetGridView != null)
                        {
                            parentRow.Expanded = true;
                            targetGridView.IsItemInserted = true;
                            targetGridView.Rebind();
                        }
                    }

}