16

在 KendoUI Grid 中调用destroy()然后在新的 Grid 上重新创建表时DataSource:为什么旧表列仍然存在?

这里唯一可以说的元素是元素。我如何告诉网格读取新的数据源列(它读取其他所有内容正确)。

(如果我制作了 2 个不同的元素,它们都会正确填充,但我宁愿只保留 1 个元素并通过销毁和重新初始化替换元素表)

4

4 回答 4

37

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

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

或更短的语法

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

其他方式 Grid 考虑到留下的旧 html - 不要忘记 Grid 可以像这里一样从表初始化。

于 2013-03-25T20:40:11.730 回答
2

只想澄清 Peter Subev 回答的最后一点,因为它帮助了我:

“不要忘记网格可以从这里的表中初始化”

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

将您的 HTML<table>标记切换为<div>标记以获得所需的结果。

于 2016-12-07T15:50:36.083 回答
1

我在角度框架中工作,似乎无法使用新的数据源和新列重新初始化 Kendo 网格。第二个网格初始化没有任何作用。我试过了:

  if (vm.mainHierGrid != null) {
            //vm.mainHierGrid.data().kendoGrid.destroy();
            $('#mainGrid').data().kendoGrid.destroy();
            //$('#mainGrid').empty();
            vm.mainHierGrid.destroy();
        }
于 2014-06-29T21:26:30.007 回答
1

破坏剑道网格并重新绑定它

if ($('#kgCopyEntityGrid').hasClass("k-grid")) {
                    $('#kgCopyEntityGrid').kendoGrid('destroy').empty();
                }

                var kgCopyGrid = $("#kgCopyEntityGrid").kendoGrid({
// your code here
                }).data("kendoGrid");
于 2019-08-23T10:05:58.080 回答