【发布时间】:2013-04-15 12:13:56
【问题描述】:
有没有办法告诉 jqGrid 在分组时忽略大小写?我不想更改数据,因为有些是大写的,有些是小写的,有些是混合大小写的。
我正在使用 jqGrid 4.4.4
【问题讨论】:
标签: jqgrid
有没有办法告诉 jqGrid 在分组时忽略大小写?我不想更改数据,因为有些是大写的,有些是小写的,有些是混合大小写的。
我正在使用 jqGrid 4.4.4
【问题讨论】:
标签: jqgrid
这个问题很好,但是 ... jqGrid 中的当前分组实现只允许分组 exact 值。我记得当有人想按月而不是按确切日期分组时,有严格的要求。
在对 jqGrid 的源代码进行了一些分析之后,我希望我找到了一种非常简单且非常灵活的方式来进行更灵活的分组。建议修改the line
if( typeof v !== "object" && grp.lastvalues[i] !== v ) {
到
if (typeof v !== "object" &&
($.isFunction(grp.isInTheSameGroup) ?
!grp.isInTheSameGroup(grp.lastvalues[i], v) :
grp.lastvalues[i] !== v)) {
这之后可以在groupingView里面定义isInTheSameGroup函数:
grouping: true,
groupingView: {
...
groupField: ["name"], // the column by which we group
isInTheSameGroup: function (x, y) {
return String(x).toLowerCase() === String(y).toLowerCase();
}
}
The demo显示如下结果:
我在jqGrid 4.4.5的jquery.jqGrid.src.js的demo修改版中使用过。 jqGrid 4.4.4 的jquery.jqGrid.src.js 的版本修改方式相同,你可以找到here。
稍后我会将我的建议发布给 trirand。我希望 jqGrid 的下一个版本将包含该功能。
已更新:按照承诺,我将 the corresponding feature request 发布到 trirand。
更新 2:我发布了the pull request,对 jqGrid 的分组模块进行了一些更改。 The demo 演示如何使用新功能。它使用 2 级分组并显示以下结果:
更新 3:我发送给 trirand 的 The pull request 现在已合并到 jqGrid 的主代码中。因此,jqGrid 的下一个版本(4.4.5 之后)将支持groupingView 内的isInTheSameGroup 和formatDisplayField 回调数组。如果你的情况看起来像
groupingView: {
groupField: ['name'],
formatDisplayField: [
function (displayValue) { //, value, cm, index, grp) {
return String(displayValue).toLowerCase();
}
],
groupColumnShow: [true],
groupDataSorted: true,
isInTheSameGroup: [
function (x, y) {
return String(x).toLowerCase() === String(y).toLowerCase();
}
]
}
回调isInTheSameGroup[0] 和formatDisplayField[0] 将按groupField[0] 分组使用。因为 jqGrid 支持多级分组,isInTheSameGrou 和 formatDisplayField 属性是回调函数数组,而不仅仅是回调函数。
在开始分组jqGrid排序数据按分组列。可以使用定义为函数的sorttype 来自定义第一步(参见the answer)。我不知道在写你的答案过程中的步骤。可能使用sorttype: function (cellvalue) {return String(cellvalue).toLowerCase();} 已经可以解决您的问题。
然后将使用函数isInTheSameGroup[level] 将前一行的分组列的值与当前行的相应值进行比较。将使用这些值调用函数 isInTheSameGroup[level]。如果您的回调返回true,则该行将与上一行分组。
回调formatDisplayField[level] 允许自定义分组标题中显示的信息。在上面的示例中,我将数据转换为小写。
【讨论】:
sorttype 定义为函数的技巧可能对您有所帮助。