Kendo网格表扩展删除表数据

时间:2018-06-22 14:24:34

标签: javascript database-design kendo-ui telerik kendo-grid

我们有一个函数可以用来扩展剑道网格中所有具有子网格的行。当前,这通过具有箭头来指示。代码中使用此箭头进行搜索,因此知道如何扩展网格。

(function () {
$(".k-grid-header .k-hierarchy-cell").html(
    "<div>" +
        "<span class=\"k-icon k-i-arrow-60-right grid-expand pointer link\" title=\"Expand all\"></span>" +
    "</div>");
$(".grid-expand").click(expandGridDetails);
});

function expandGridDetails() {
    var grid = $(".k-grid").data("kendoGrid");
    grid.expandRow(grid.tbody.find(".k-master-row").has(".k-hierarchy-cell a.k-icon"));
}

对于其中一个网格,它可以完美工作,但是对于第二个网格,此函数将不会扩展行,而是删除detailRow中表示的某些数据。

该问题似乎在执行grid.expand()方法后立即发生。如果我做其他任何事情,例如grid.tbody.find-statement,该表将保持不变。使用grid.collapseRow()会导致相同的事情发生,而不是执行而是删除一些数据。主行在整个过程中保持完整。

有人知道这个错误的可能原因吗?

1 个答案:

答案 0 :(得分:0)

一位高级程序员向我解释了我做错了什么,并用他的解决方案解决了这个问题。使用$(“。grid-expand”),即使在另一个网格中选择了一行,代码也每次都调用第一个网格。解决方案是保存一个全局变量,该变量跟踪当前正在查看的网格。 Backdraw是,当同一用户多次打开同一页面时,此全局变量将导致问题,但我认为没有理由优先解决此小问题。

另一种解决方案是使用

function expendGridDetails(e) {
   var grid = e.sender;
}

此方法的缺点是e变量不会自动发送给每个函数。我尚不确定什么决定他们是否收到此变量,但是比使用可能未设置为正确值的全局变量更省钱。 e.sender询问正在调用该函数的网格的名称。或者至少从广义上讲,这是我从给我的解释中所了解的。