分組時忽略大小寫
回答
的問題是很好的,但是......目前實施的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