Kendogrid destroy()并在新数据源上重新创建表,为什么旧​​表列仍然存在?

时间:2013-03-25 15:19:21

标签: telerik kendo-ui telerik-grid kendo-grid

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

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

(如果我制作2个不同的元素,它们都填充正确,但我只是保留1个元素并通过destroy和reinit替换元素表)

4 个答案:

答案 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");