在KendoUI Grid中调用destroy()
然后在新DataSource
上重新创建表时:为什么旧表列仍然存在?
这里唯一保留说法的元素是元素。如何告诉网格读取新的数据源列(它读取其他所有正确的内容)。
(如果我制作2个不同的元素,它们都填充正确,但我只是保留1个元素并通过destroy和reinit替换元素表)
答案 0 :(得分:32)
最有可能的原因是您没有清除Grid容器中的内容。 e.g。
$('#gridName').data().kendoGrid.destroy();
$('#gridName').empty();
或更短的语法
$('#gridName').kendoGrid('destroy').empty();
其他方式Grid会考虑剩下的旧html - 不要忘记Grid可以从像here这样的表中初始化。
答案 1 :(得分:2)
只想澄清Peter Subev的最后一点答案,因为它帮助了我:
"不要忘记可以从here"
这样的表格初始化网格
这只是说您在HTML中使用了<table>
标记而不是<div>
标记。使用<table>
标记将Grid表数据与Grid列分开,因此当您执行$(&#39; #gridName&#39;)。kendoGrid(&#39; destroy&#39;)。empty()它只是破坏/清空表数据而不是列信息。
将您的HTML <table>
标记切换为<div>
标记,以获得所需的结果。
答案 2 :(得分:1)
我正在使用角度框架,似乎无法使用新的dataSource和新列重新启动Kendo网格。在第二个网格init上没有任何作用。我试过了:
if (vm.mainHierGrid != null) {
//vm.mainHierGrid.data().kendoGrid.destroy();
$('#mainGrid').data().kendoGrid.destroy();
//$('#mainGrid').empty();
vm.mainHierGrid.destroy();
}
答案 3 :(得分:0)
销毁剑道网格并重新绑定
if ($('#kgCopyEntityGrid').hasClass("k-grid")) {
$('#kgCopyEntityGrid').kendoGrid('destroy').empty();
}
var kgCopyGrid = $("#kgCopyEntityGrid").kendoGrid({
// your code here
}).data("kendoGrid");