2013-04-25 5 views
5

私はjqgridを持っています。私は列の値に基づいていくつかの行をグループ化しました。それは、最終的なグリッドように、このグリッド内の行をソートすることが可能です:デモを働くことは、私のグリッドは jqGrid after groupingjqGridグループ化中に列を並べ替えることを検討してください。

問題どのように見えるかが続きjqGrid

var preclosingtable = $('#preclosing'); 
    preclosingtable.jqGrid({ 
     datatype: 'local', 
     data: data.DOCS, 
     colNames: ['', 'Documents Received', 'Comments', 'NA', 'DocGroup'], 
     colModel: [ 
     { name: 'Documents', index: 'Documents', align: 'left', sortable: false, editable: false, width: 20 }, 
     { name: 'DocsReceived', index: 'DocsReceived', align: 'center', sortable: false, editable: true, edittype: 'checkbox', editoptions: { value: "True:False" }, formatter: "checkbox", width: 140 }, 
     { name: 'Comments', index: 'Comments', align: 'center', sortable: false, editable: true, edittype: "textarea", editoptions: { rows: "3", cols: "16" }, width: 180 }, 
     { name: 'NA', index: 'NA', editable: true, formatter: 'dynamicText', width: 150, edittype: 'custom', editoptions: { custom_element: radioelem, custom_value: radiovalue} }, 
      { name: 'DocGroup', index: 'DocGroup', editable: false, width: 1 } 
     ], 
     rowNum: data.DOCS.length, 
     //rowList: [10, 20, 30], 
     pager: '#preclosingpagerdiv', 
     viewrecords: true, 
     sortorder: "asc", 
     sortname: 'Documents', 
     grouping: true, 
     groupingView: { 
      groupField: ['DocGroup'], 
      groupColumnShow: [false], 
      groupDataSorted: true, 
      groupOrder : 'asc' 
     }, 
     localReader: { 
      id: 'ConfigId' 
     }, 
     shrinkToFit: false, 
     height: 'auto', 
     loadComplete: function() { 
      HideGroupHeaders(this); 
     }, 
     onSelectRow: function (id) { 
      preclosingtable.jqGrid('saveRow', previouslyselectedRow, false, 'clientArray'); 
      previouslyselectedRow = SetJQGridRowEdit(id, previouslyselectedRow, preclosingtable); 
     } 
    }); 

を定義するコードのlink 一部でご利用いただけます次の順序で行を持ってい

  • アラバマ
  • D
  • メーン
  • ニュージャージー州
  • バージニア

答えて

10

カスタムソート機能を追加することで、あなたの問題を解決することができます:ここでは

は、あなたが基礎として使用することができbeforeProcessing機能を使用して、その後、ソートになり、このコラムを埋めるためにあります空を持つ入力データ結果

sorttype: function (cellvalue, rowObject) { 
    return cellvalue? cellvalue : rowObject.Documents; 
} 

:あなたがグループ化を行うコラムDocGroupに(hereherehereを参照してください)はソートされ、Documentsでグループ化されます。あなたはFiddle

enter image description here

+0

おかげ@Olegに結果が表示されます。出来た。 – fcmaine

+1

@SrinivasPotluri:あなたは大歓迎です! 1つの一般的な発言:より積極的な議決権を使うべきです。 11ヶ月で5回しか権利を使用しませんでした。 Stackoverflow *のユーザーがどの情報(回答または質問)が参考になるかを決定するという考えがあるため、投票はエンジン検索の主な基準です。あなたは1日に** 30の質問または回答**を投票する権利があります([ここ](http://meta.stackexchange.com/a/5213/147495)を参照)。だからあなたが見つけた* stackoverflowに関する情報を*参考にしてください**もしあなたが他のユーザーが情報を見つけるのを助けたいなら**あなたはそれを投票するべきです**。 – Oleg

+0

@Oleg私はこれを行う良い方法があると思った:私はあなたがこの質問に来て、私のはるかに良い答えを提供する強い疑いを持っていた! – Mark

1

2つのことが私の心に来てQ、あなたはグリッドに並べ替えに別の列を作成することができます。サーバー側のその列にデータを配置しないで、jqGridのbeforeProcessing関数の列にデータを追加します。

事前処理機能では、グループ化データをテストし、最初の文字を使用してこの列にデータを入力し、値が空白の場合(上記のD、Qの例の場合)、これらの値を使用します。私が正しくあなたの問題を理解していれば

 beforeProcessing: function (data, status, xhr) { 
      for (var x = 0, length = data.rows.length; x < length; x++) { 
       var valueToPutInSortColumn = .... 
       data.rows[x].cell.splice(sortColumnIndex, 0, valueToPutInSortColumn); 
      } 
     ....