Kendogrid destroy() 和重新创建一个新的数据源后,为什么旧表格的列还存在?

16
在KendoUI Grid中调用destroy()并在新的DataSource上重新创建表格时,为什么旧表格列仍然存在?唯一保留不变的是element元素。如何告诉网格读取新数据源列(它正确读取其他所有内容)。(如果我创建2个不同的element元素,它们都能正常填充,但我更喜欢保留一个element元素,并通过销毁和重新初始化来替换元素表格)。
4个回答

38

很可能是因为您没有清除 Grid 容器内的内容。例如:

$('#gridName').data().kendoGrid.destroy();
$('#gridName').empty();

或更短的语法

$('#gridName').kendoGrid('destroy').empty();

网格还可以考虑留下的旧HTML元素 - 不要忘记网格可以像这里一样从表格初始化。


1
当我尝试执行上述Javascript时,我遇到了一个Javascript运行时错误:无法获取未定义或空引用的属性“kendoGrid”。 - Jeremy

3

我想澄清Peter Subev最后一句话的意思,因为它帮助了我:

"不要忘记Grid可以像这里一样从表格初始化"

这只是说在你的HTML中使用了<table>标记而不是<div>标记。使用<table>标记将Grid表数据与Grid列分开,因此当你执行$('#gridName').kendoGrid('destroy').empty()时,它只会销毁/清空表格数据而不是列信息。

将HTML <table>标记更改为<div>标记即可获得所需的结果。


1

我正在使用Angular框架,但无法使用新的数据源和新列重新初始化Kendo网格。第二次初始化网格时什么都没有起作用。我已经尝试了:

  if (vm.mainHierGrid != null) {
            //vm.mainHierGrid.data().kendoGrid.destroy();
            $('#mainGrid').data().kendoGrid.destroy();
            //$('#mainGrid').empty();
            vm.mainHierGrid.destroy();
        }

2
我曾经遇到过同样的问题,最终我使用了嵌入在Angular指令中的jQuery网格。 - ps0604

1
销毁 kendo grid 并重新绑定它。
if ($('#kgCopyEntityGrid').hasClass("k-grid")) {
                    $('#kgCopyEntityGrid').kendoGrid('destroy').empty();
                }

                var kgCopyGrid = $("#kgCopyEntityGrid").kendoGrid({
// your code here
                }).data("kendoGrid");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接