分组时忽略大小写
回答
的问题是很好的,但是......目前实施的jqGrid分组的分组允许仅确切值。当记者想按月分组而不是按确切日期分组时,我记得密切的要求。
对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
。 jqGrid 4.4.4的版本jquery.jqGrid.src.js
以相同的方式修改,您可以找到here。
我会稍后发布我的建议来评价。我希望下一个版本的jqGrid将包含该功能。
已更新:如所承诺的,我将the corresponding feature request转贴给了trirand。
已更新2:我发布了the pull request,jqGrid的分组模块发生了一些变化。 The demo演示如何使用新功能。它采用2级分组,并显示下列结果:
修订3:The pull request我发送到trirand现在被合并到的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]
允许定制显示在分组标题中的信息。在上面的例子中,我将数据转换为小写。
- 1. 忽略区分大小写
- 2. 忽略在regex.replace中区分大小写?
- 3. 用apache忽略大小写
- 4. 忽略大小写 - laravel 4
- 5. 忽略大小写difflib.get_close_matches()
- 6. 忽略与BitBucket大小写
- 7. LINQ忽略大小写
- 8. AWK忽略大小写
- 9. 忽略大小写validate_exclusion
- 10. SOPT值忽略大小写
- 11. LFTP MGET忽略大小写
- 12. 忽略大小写与__startswith
- 13. 被忽略大小写
- 14. 忽略大小写boost :: regexp
- 15. RegEx忽略大小写
- 16. 替换忽略大小写
- 17. 使用重复时忽略大小写
- 18. 如何使Class.forName忽略小写/大写
- 19. 忽略大小写用PHP对Magento的分类排序时
- 20. 在javascript中搜索数组时忽略大小写
- 21. 在区分大小写的列中忽略大小写的搜索(并且不区分大小写)
- 22. 忽略JDO查询中的大小写
- 23. 的Microsoft Visual Basic 6.5忽略大小写
- 24. 忽略XSLT中的大小写
- 25. 书架orderBy忽略大小写
- 26. 忽略大小写上自动完成
- 27. MySQL查询忽略大小写
- 28. 集合removeAll忽略大小写?
- 29. 搜索忽略大小写敏感
- 30. 忽略大小写的UITextField/UITextView的
奥列格,非常感谢你的详细回应和功能要求。我不喜欢分发代码,因为它很难更新到更新的版本。因此,我通过添加另一个隐藏列来解决该问题,其中数据为大写,并按该列分组。 – 2013-04-22 17:53:12
@JonasStawski:不客气!我了解你的解决方法和你的观点。不过,我认为这个问题很普遍。我之前建议过许多功能,现在是jqGrid的一部分,它可以帮助其他人。我希望Tony(trirand)能够实现我所建议的功能(无论它是按照我的建议还是其他方式实施都没关系)。 – Oleg 2013-04-22 18:45:42
我同意。希望它能做到,而且我不需要将它分叉,我可以删除我的黑客 – 2013-04-22 19:56:53