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

Joh*_*orn 1 asp.net-mvc jquery kendo-ui kendo-grid

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

我得到了这么远,但是因为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);
                    });
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

eza*_*ker 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"));
        }
      }
   }
Run Code Online (Sandbox Code Playgroud)

分组行与常规行处于相同的DOM级别,因此您需要使用prev()而不是nearest().

DEMO