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