我有一个Telerik RadGrid,它的列是生成的。RadGrid是分层的,我有RadWindows,我可以在其中动态地向我的网格添加/删除/修改列,并且RadGrid在RadWindow关闭时刷新。
我的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
如有任何帮助/建议,我们不胜感激。
发布于 2011-10-27 01:42:45
Telerik目前不支持此功能,有关更多信息,请访问this页面。
发布于 2011-10-17 23:45:37
您是否在页面上使用与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阅读。
https://stackoverflow.com/questions/7758635
复制相似问题