我有一个网格,实现分组,但想扩展显示在groupText:区域的细节.理想情况下,我可以获取有关该分组的数据,并在该组行中显示组名({0}默认值).
换句话说,我想要实现的是一种不仅显示组名而且还显示JSON提要中包含的一些其他数据项的方法.
对于任何能够实现这一目标的人来说,我的搜索似乎很短暂,但我希望有人可以阐明扩展这个设置并提供对这个区域进行格式化的途径.
解决方法
我发现你的问题很有趣,但实施并不简单.在
the answer中,我展示了如何在分组的摘要行中使用自定义格式化程序.
在the demo中,您可以看到如何实现分组文本的自定义格式.演示显示以下内容:
该实现仅包括the custom formatter的实现,其可以用于两个目的:格式化相应列的内容以及在按列分组的情况下格式化分组文本.代码有点棘手,但我希望所有人都能遵循它.代码使用输入参数的差异来定义是否将调用格式化程序来格式化列内容或格式化分组文本.
获取像“(test4,test7)”这样的文本的代码的一部分在使用大量行的情况下不是那么有效,但是它有效.
下面是“日期”列的格式化程序代码,通常与预定义的格式化程序一起使用:’date’.我在代码中调用了原始的Date-formatter,但用于分组文本更复杂的代码:
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; }
更新:演示的固定版本是here.它使用$.fn.fmatter而不是当前从jqgrid方法$.fmatter.util.DateFormat中删除.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。