2013-04-22 79 views
1

有沒有辦法告訴jqGrid在分組時忽略大小寫?我不想更改數據,因爲有些會是大寫,小寫和其他混合大小寫。分組時忽略大小寫

我使用的jqGrid 4.4.4

回答

2

的問題是很好的,但是......目前實施的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)) { 

在此之後一個可以定義groupingViewisInTheSameGroup功能:

grouping: true, 
groupingView: { 
    ... 
    groupField: ["name"], // the column by which we group 
    isInTheSameGroup: function (x, y) { 
     return String(x).toLowerCase() === String(y).toLowerCase(); 
    } 
} 

The demo顯示以下結果:

enter image description here

我用在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級分組,並顯示下列結果:

enter image description here

修訂3The pull request我發送到trirand現在被合併到的jqGrid的主代碼。因此,jqGrid的下一個版本(4.4.5之後)將支持groupingView內的回調數組isInTheSameGroupformatDisplayField。如果你的情況下,它看起來像

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支持多級分組,isInTheSameGrouformatDisplayField屬性是回調函數的數組,而不僅僅是回調函數。

在分組開始時jqGrid排序數據按分組列。可以使用定義爲函數的sorttype來自定義第一步(請參見the answer)。我不會在寫你的答案時談到這一步。可能使用sorttype: function (cellvalue) {return String(cellvalue).toLowerCase();}已經可以解決您的問題。

然後函數isInTheSameGroup[level]將因此用於比較上一行的分組列的值與當前行的相應值。函數isInTheSameGroup[level]將與值一起被調用。如果您的回調返回true那麼該行將與前一個分組。

回調formatDisplayField[level]允許定製顯示在分組標題中的信息。在上面的例子中,我將數據轉換爲小寫。

+0

奧列格,非常感謝你的詳細迴應和功能要求。我不喜歡分發代碼,因爲它很難更新到更新的版本。因此,我通過添加另一個隱藏列來解決該問題,其中數據爲大寫,並按該列分組。 – 2013-04-22 17:53:12

+0

@JonasStawski:不客氣!我瞭解你的解決方法和你的觀點。不過,我認爲這個問題很普遍。我之前建議過許多功能,現在是jqGrid的一部分,它可以幫助其他人。我希望Tony(trirand)能夠實現我所建議的功能(無論它是按照我的建議還是其他方式實施都沒關係)。 – Oleg 2013-04-22 18:45:42

+0

我同意。希望它能做到,而且我不需要將它分叉,我可以刪除我的黑客 – 2013-04-22 19:56:53