【问题标题】:customize group header for kendo grid自定义剑道网格的组标题
【发布时间】:2016-09-09 06:49:24
【问题描述】:

我的数据源中有两个字段“数字”和“名称”,它们是一对一相关的。

目前,我使用数字字段对数据进行分组,组头显示“数字:xxx”。有没有办法在当前文本后面附加名称字段?作为'号码:xxx,名称:xxxx'?

我查看了剑道网格文档并搜索了很长时间,似乎剑道网格仅支持根据分组字段的值或聚合显示组头,找不到将这两个字段分组的解决方案。

然后我有另一个解决方案来处理它。添加一个合并两个字段的新字段,然后按此新字段分组,但新字段将显示在列标题中的列过滤器中。有没有办法解决这个问题?

$("#grid").kendoGrid({
    columns: [{
        field: "number",
        hidden: true
    },{
        field: "name"
    }, {
        field: "order"
    }],
    dataSource: {
        data: [{
        		number: 1,
            name: "Jane Doe",
            order: "order1"            
        },
        {
        		number: 1,
            name: "Jane Doe",
            order: "order2"            
        },
        {
        		number: 1,
            name: "Jane Doe",
            order: "order3"            
        },{
        		number: 2,
            name: "Allen",
            order: "order1"
        },{
        		number: 2,
            name: "Allen",
            order: "order2"
        }
        ],
        group: {
            field: "number"           
        }
    }
});

下面的代码可以显示组合字段,但是有两个问题: 1. 标题文本始终包含'header:'前缀,如“header:number:1,name:Jane Doe”; 2.在列过滤器中,有一个标题列。

$("#grid").kendoGrid({
    columns: [{
        field: "number",
        hidden: true
    },{
        field: "name",
        hidden: true
    }, {
        field: "order"
    },{
        field: "header",
        hidden: true
    }
    ],
    dataSource: {
        data: [{
        		number: 1,
            name: "Jane Doe",
            order: "order1",
            header: "number: 1, name: Jane Doe"
        },
        {
        		number: 1,
            name: "Jane Doe",
            order: "order2",
            header: "number: 1, name: Jane Doe"
        },
        {
        		number: 1,
            name: "Jane Doe",
            order: "order3",
            header: "number: 1, name: Jane Doe"
        },{
        		number: 2,
            name: "Allen",
            order: "order1",
            header: "number: 2, name: Allen"
        },{
        		number: 2,
            name: "Allen",
            order: "order2",
            header: "number: 2, name: Allen"
        }
        ],
        group: {
            field: "header"           
        }
    },
    columnMenu: true
});

谢谢

【问题讨论】:

  • 你能在 sn-p 中重现这个场景吗?这将帮助我们为您解决问题。仅靠描述我们无能为力。
  • @Cerbrus,感谢您的回复,请在帖子中查看我的代码。数据按数字分组,组内的所有名字都一样,所以想隐藏名字字段,让它显示在组头。如“号码:1,姓名:Jane Doe”。

标签: javascript kendo-ui kendo-grid


【解决方案1】:

要从组标题中隐藏列描述,您应该使用 groupHeaderTemplate: "#= data.value #"。

要从 ColMenu 中隐藏列,您应该在列定义中使用 "menu": false。

应用了这两项更改的列应如下所示:

    {
       field: "header",
       hidden: true,
       "menu": false,
       groupHeaderTemplate: "#= data.value #",
    }

【讨论】:

  • 看来我需要为每条记录循环整个数据源,这可能会引入性能问题。还有其他方法吗?在我的帖子中,我写了一个解决方案,但效果不佳,是否可以在列过滤器中隐藏引入的标题列并在我的代码中隐藏“标题:”前缀?
  • 使用 groupHeaderTemplate: "#= data.value #"
  • 谢谢,这解决了第二个问题,但是如何解决第一个问题?组合字段将显示在列过滤器中,有没有办法隐藏它?
  • 你可以使用函数 columnMenuInit(e) {} 隐藏它
  • 抱歉,您能提供更多详细信息吗?
猜你喜欢
  • 2014-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 2013-11-26
相关资源
最近更新 更多