我有一个实现分组的网格,但想扩展 groupText: 区域中显示的详细信息。理想情况下,我将能够获取有关该分组的数据并使用组名({0} 默认值)显示在该组行中。
换句话说,我想要实现的是一种方法,不仅可以显示组名,还可以将 JSON 提要中包含的其他一些数据项显示到网格中。
我的搜索似乎缺少任何能够实现这一目标的人,但我希望有人能够对扩展此设置并提供对创建该区域的访问有所了解。
我有一个实现分组的网格,但想扩展 groupText: 区域中显示的详细信息。理想情况下,我将能够获取有关该分组的数据并使用组名({0} 默认值)显示在该组行中。
换句话说,我想要实现的是一种方法,不仅可以显示组名,还可以将 JSON 提要中包含的其他一些数据项显示到网格中。
我的搜索似乎缺少任何能够实现这一目标的人,但我希望有人能够对扩展此设置并提供对创建该区域的访问有所了解。
我觉得你的问题很有趣,但实现并不简单。在我之前展示的答案中,如何在分组的摘要行中使用自定义格式化程序。
在演示中,您可以看到如何实现分组文本的自定义格式。该演示显示以下内容:
该实现仅由可用于两个目的的自定义格式化程序的实现组成:在按列分组的情况下,格式化相应列的内容和格式化分组文本。代码有点棘手,但我希望所有人都能遵循它。该代码使用输入参数的差异来定义是调用格式化程序来格式化列内容还是格式化分组文本。
在使用大量行的情况下,获取诸如“(test4,test7)”之类的文本的代码的一部分不是那么有效,但它可以工作。
下面是“日期”列的格式化程序代码,通常与预定义的formatter: 'date'
. 我在部分代码中调用了原始日期格式化程序,但用于分组文本更复杂的代码:
formatter: function (cellval, opts, rowObject, action) {
var fullOpts = $.extend({}, $.jgrid.formatter.date, opts),
formattedDate = $.fmatter.util.DateFormat('Y-m-d', cellval, 'd-M-Y', fullOpts),
groupIdPrefix = opts.gid + "ghead_",
groupIdPrefixLength = groupIdPrefix.length,
month = Number(cellval.split('-')[1]), // input format 'Y-m-d'
names = [], data, i, l, item;
// test wether opts.rowId start with opts.gid + "ghead_" and integer
// and rowObject is the array and action is undefined.
if (opts.rowId.substr(0, groupIdPrefixLength) === groupIdPrefix && typeof action === "undefined") {
// custom formating of the group header
// we just simulate some login by testing of the month > 9
// the next code fragment is not effective, but it can be used
// in case of not so large number of groups and the local data
data = $(this).jqGrid("getGridParam", "data");
for (i = 0, l = data.length; i < l; i++) {
item = data[i];
if (item.invdate === cellval) {
names.push(item.name);
}
}
return (month > 9 ? ('<span class="ui-icon ui-icon-alert" style="float: left;"></span>' +
'<span style="color:tomato; margin-left: 5px;">') : "<span>") +
formattedDate + ' (' + names.join() + ')</span>'
}
return formattedDate;
}
更新:演示的固定版本在这里。它使用$.fn.fmatter
而不是当前从 jqGrid 方法中删除$.fmatter.util.DateFormat
。