Setting a groupHeaderTemplate for Kendo Grid UI



我现在正在与php的kendo网格UI合作。我有一个在网格中的列,可以列出我的数据库(表'stage_name'的字段名称')中的"舞台"名称。我可以通过将" stage_name"设置为列中的字段来做到这一点,但是我必须根据" stage_id"(表的主要键)对阶段名称进行排序。因此,我将代码重写如下:

var grid = $("#stageGrid").kendoGrid({
    columns: [{
        field: "stage_id",  // stage_name
        title: "Stage",
        template: "#=stage_name#",
        aggregates: ["count"],
        groupHeaderTemplate: "Stage : #=(value != null)? value : 'Empty' # (Count: #=count#)",
        width: 150
    }]
});

我能够列出舞台名称,相对于stage_id&所有这些。现在,我的问题是,在对列进行分组时,stage_id的显示为列标题(您可以在附加的图像中看到)。我必须通过显示相应的阶段名称来解决这个问题。你们中的任何一个人都能对此有一个好主意来帮助我。期望您有价值的想法。

预先感谢您。

如果我正确理解您的方案,则使用网格中的外键列,并且您想显示与该外键ID相对应的名称,并且您也想通过使用该外国来分组钥匙。为此,使用列的值属性的最佳方法除了具有文本和值属性的对象数组之外,Kendo Gird将自动在该列的值上选择该行基础的文本。

有关更多信息,您可以检查此链接

http://demos.telerik.com/kendo-ui/grid/foreignkeycolumn

这是一个工作的演示。

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <title>Kendo UI Snippet</title>
  <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2016.3.1028/styles/kendo.common.min.css" />
  <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2016.3.1028/styles/kendo.rtl.min.css" />
  <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2016.3.1028/styles/kendo.silver.min.css" />
  <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2016.3.1028/styles/kendo.mobile.all.min.css" />
  <script src="http://code.jquery.com/jquery-1.12.4.min.js"></script>
  <script src="http://kendo.cdn.telerik.com/2016.3.1028/js/kendo.all.min.js"></script>
</head>
<body>
  <div id="grid"></div>
  <script>
    var positionValues = [{
      "text": "Project Manager",
      "value": 1
    }, {
      "text": "Sales Manager",
      "value": 2
    }, {
      "text": "Engineer",
      "value": 3
    }];
    $("#grid").kendoGrid({
      columns: [{
        field: "name",
        title: "Name"
      }, {
        field: "age",
        title: "Age"
      }, {
        field: "positionId",
        title: "Position",
        values: positionValues
      }],
      dataSource: {
        data: [{
          name: "Jane Doe",
          age: 30,
          positionId: "2"
        }, {
          name: "John Doe",
          age: 34,
          positionId: "1"
        }, {
          name: "Sam Degree",
          age: 40,
          positionId: "1"
        }, {
          name: "Salina Kile",
          age: 51,
          positionId: "2"
        }, {
          name: "Johney Doe",
          age: 24,
          positionId: "3"
        }, {
          name: "Matt Prior",
          age: 23,
          positionId: "3"
        }, {
          name: "Michael Jackson",
          age: 37,
          positionId: "2"
        }, ],
        group: {
          field: "positionId",
          aggregates: [{
            field: "age",
            aggregate: "count"
          }]
        }
      }
    });
  </script>
</body>
</html>

我希望它会有所帮助。

编辑

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <title>Kendo UI Snippet</title>
  <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2016.3.1028/styles/kendo.common.min.css" />
  <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2016.3.1028/styles/kendo.rtl.min.css" />
  <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2016.3.1028/styles/kendo.silver.min.css" />
  <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2016.3.1028/styles/kendo.mobile.all.min.css" />
  <script src="http://code.jquery.com/jquery-1.12.4.min.js"></script>
  <script src="http://kendo.cdn.telerik.com/2016.3.1028/js/kendo.all.min.js"></script>
</head>
<body>
  <div id="grid"></div>
  <script>
    var positionValues = [{
      "text": "Project Manager",
      "value": 1
    }, {
      "text": "Sales Manager",
      "value": 2
    }, {
      "text": "Engineer",
      "value": 3
    }];
    function showPos(value) {
      position = positionValues.find(function(el){
        return el.value == value;
      });
      return (position) ? position.text : "";
    }
    $("#grid").kendoGrid({
      columns: [{
        field: "name",
        title: "Name"
      }, {
        field: "age",
        title: "Age"
      }, {
        field: "positionId",
        title: "Position",
        values: positionValues,
        groupHeaderTemplate: "Custom Template: #= showPos(value) #"
      }],
      dataSource: {
        data: [{
          name: "Jane Doe",
          age: 30,
          positionId: "2"
        }, {
          name: "John Doe",
          age: 34,
          positionId: "1"
        }, {
          name: "Sam Degree",
          age: 40,
          positionId: "1"
        }, {
          name: "Salina Kile",
          age: 51,
          positionId: "2"
        }, {
          name: "Johney Doe",
          age: 24,
          positionId: "3"
        }, {
          name: "Matt Prior",
          age: 23,
          positionId: "3"
        }, {
          name: "Michael Jackson",
          age: 37,
          positionId: "2"
        }, ],
        group: {
          field: "positionId",
          aggregates: [{
            field: "age",
            aggregate: "count"
          }]
        }
      }
    });
  </script>
</body>
</html>

最新更新