检查剑道网格中的详细信息行

时间:2018-06-25 15:02:32

标签: javascript kendo-ui kendo-grid master-detail

我使用的剑道网格具有折叠的子网格,直到用户决定取消选择它为止。为了确保用户不会选择展开子网格中没有数据的行,我想检查每一行是否有子数据。如果有数据,那么应该出现一个箭头,否则就不会出现。

为了将两个网格耦合在一起,我正在使用

.ClientDetailTemplateId("MyTemplate")

我要运行的代码看起来像这样

function dataBound(e) {
    var grid = e.sender;

    var gridData = grid.dataSource.view();
    expandGridDetailsSystem(e);

    for (var i = 0; i < gridData.length; i++) {
        //get the item uid
        var currentUid = gridData[i].uid;
        var currentRow = grid.table.find("tr[data-uid='" + currentUid + "']");
        var detailRow = currentRow.next(".k-detail-row");

        if (!detailRow) {
            //remove the expand button
            $(currentRow).find(".k-hierarchy-cell a").removeClass("k-icon k-i-expand");
        }
    }
    collapseGridDetailsSystem(e);
}

if (!gridData[i].HasSubGrid)是我想要将布尔值保存到的内容。问题是我不知道如何检查k-detail-cell。特别是看到默认值是折叠的。

为了清楚起见,我想查找当前行是否有子行,如果有,请在执行if语句之前更改HasSubGrid元素。

在此问题上的任何帮助将不胜感激。如果需要更多信息,请随时询问。

1 个答案:

答案 0 :(得分:1)

如果我没记错的话,如果您激活明细模板,则所有行都会有一个expand箭头来显示明细,无论它是否有明细。我认为这是一个古老的 issue (请检查herehere),因为您必须在dataBound事件中自行修复它,这有点丑陋。鉴于此,您所有的行都将保证有一个同级明细行,该行将一直隐藏,直到扩展 master 行。

换句话说,对于网格中的每个tr.k-master-row(实际上是显示的数据行),它旁边都会有一个tr.k-detail-row,例如:

<tr class='k-master-row'></tr>
<tr class='k-detail-row'></tr>
<tr class='k-master-row'></tr>
<tr class='k-detail-row'></tr>

所以你可以做...

var currentRow = grid.table.find("tr[data-uid='" + currentUid + "']"),
    detailRow = currentRow.next('.k-detail-row');

具有详细信息行。

一个重要的细节是仅在扩展主行后才渲染细节内容。因此,您将无法在呈现细节之前管理细节中的任何元素。