分层Telerik RadGrids:如何更改详细信息表中的列?

时间:2011-10-13 18:21:45

标签: asp.net telerik telerik-grid

我有一个Telerik RadGrid,它的列已生成。 RadGrid是分层的,我有RadWindows,我可以在其中添加/删除/修改dinamically列到我的网格,并在RadWindow关闭时刷新RadGrid。

我的RadWindow:

    <telerik:RadWindow ID="RadWindow1" runat="server" KeepInScreenBounds="true" CssClass="Columns"
        Title="Manage Columns" OnClientClose="refreshGrid" EnableViewState="false"
        Width="740" Height="330">
    </telerik:RadWindow>

refreshGrid Javascript函数:

     function refreshGrid(sender) {
            $find("<%= RadGrid1.ClientID %>").get_masterTableView().rebind();
            showScrollBars();
    }

如果我在第一级添加/修改/删除列,则此方法有效,但它不适用于详细信息表。更确切地说,详细信息表在服务器端正确刷新,但在客户端没有刷新。有人知道这个问题的原因吗?

我在Telerik论坛上找到了一个页面,但它没有帮助:

http://www.telerik.com/community/forums/aspnet-ajax/grid/details-table-not-refreshed-in-spite-of-detailtabledatabind-is-fired.aspx

感谢任何帮助/建议。

2 个答案:

答案 0 :(得分:0)

您是否在与RadGrid相关的页面上使用任何形式的Ajax?我想,正如该论坛帖子所指出的,部分回发可能存在问题,不一定必要时更新控件。因此,如果您使用RadAjaxManager,我建议稍微过度使用哪个控件更新页面上的其他控件然后向后(慢慢关闭项目)以查看是否得到不同的结果。或者,您也可以使用以下客户端脚本(这应该可行,但我没有在本地测试它):

   function refreshGrid(sender) {
        var myGrid = $find("<%= RadGrid1.ClientID %>");
        var myGridMasterTableView = myGrid.get_masterTableView();
        var myGridDetailTableView = myGridMasterTableView.get_detailTables()[0]; //select the first detail table
        var myGridMasterTableView.rebind();
        var myGridDetailTableView.rebind();
}

我在这里做的只是在MasterTableView和它的第一个DetailTableView上调用rebind。可能会觉得有点难看,但它会强制细节表刷新:)对于更多客户端的好东西,我建议阅读this documentation article

答案 1 :(得分:0)

此刻Telerik不支持此功能,有关详细信息,请转至this页。