如何按行中的值以编程方式折叠或扩展Kendo Grid Group

时间:2015-06-17 19:37:16

标签: jquery asp.net-mvc kendo-ui kendo-grid

我要求将分组网格默认为折叠状态,除非它包含具有特定值的行(状态=="已关闭")。

我得到了这么远,但是因为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);
                    });
            }
        }
    }

1 个答案:

答案 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