我要求将分组网格默认为折叠状态,除非它包含具有特定值的行(状态=="已关闭")。
我得到了这么远,但是因为dataView只包含分组字段的行数而不是之前看到的行数。
function collapse_rows() {
var grid = this.grid;
var dataView = this.dataSource.view();
for (var i = 0; i < dataView.length; i++) {
if (dataView[i].status == "Closed") {
var uid = dataView[i].uid;
$("#userQuestionSetGrid tbody").find("tr[data-uid=" + uid + "]").
closest("tr.k-grouping-row").each(
function (e) {
e.collapseRow(this);
});
} else {
var uid = dataView[i].uid;
$("#userQuestionSetGrid tbody").find("tr[data-uid=" + uid + "]").
closest("tr.k-grouping-row").each(
function (e) {
//e.collapseRow(this);
});
}
}
}
答案 0 :(得分:5)
dataSource的第一级是组。然后每个组都有一个名为items的属性,实际上是组中的行。所以试试这个:
var grid = $("#grid").data("kendoGrid");
var dataView = grid.dataSource.view();
for (var i = 0; i < dataView.length; i++) {
for ( var j = 0; j < dataView[i].items.length; j++) {
if (dataView[i].items[j].status == "Closed") {
var uid = dataView[i].items[j].uid;
grid.collapseGroup($("#grid").find("tr[data-uid=" + uid + "]").prev("tr.k-grouping-row"));
}
}
}
对行进行分组与常规行处于相同的DOM级别,因此您需要使用prev()而不是nearest()。
<强> DEMO 强>