1

JQGrid のマルチ グループ化により、値のリストが ajax getJSon() によって取得されると、行の並べ替えがインラインで再配置されることがわかりました。並べ替えによって、同じ要素のグループが複数のグループに分割されることがあります。

解決策は、JQGrid行のクライアント側での再ソートを回避することだと思います。これは、JSON内で指定された同じ順序を変更せずに確実に再利用することを目的としています---サーバーによって返されます。

次の構成を使用しています。

jq("#myGrid").jqGrid({
  datatype: 'local',
  data: myvar.detail,  // a well formatted json locally stored
  colNames: [ ....],
  colModel: [
    {name:'nome_attr',index:'nome_attr', sorttype: function () {return 1;}, editable:true, editrules:{required:true}, editoptions:{size:27}, align:'center'},
    {name:'desc_attr', index:'desc_attr', sorttype: function () {return 1;}, editable:true, editrules:{required:false}, edittype: "textarea",editoptions:{rows:5, cols:25}, hidden:true},
    {name:'valore',index:'valore', sorttype: function () {return 1;},editable:true, editrules:{required:false}, editoptions:{size:30}, width:120},
     ....
          ],
   loadonce: false,     // to dis-able sorting on client side
   sortable: false,     
   grouping:true,
   groupingView : {
         groupField : ['nome_attr', 'valore'],
         groupColumnShow: [false,false],
         groupText : ['{0}'],
         groupCollapse: true,
         groupDataSorted: false, 
         groupSorted: false, 
         groupOrder: false
        }
  });

通知 (1) ソート タイプを無効にする回避策を既に使用しています

 sorttype: function () {return 1;}

hereで説明されているように、"#myGrid"はサブグリッドであり、datatype: localはコンテナ グリッドで行が以前に取得されたことを意味します。

Multi Grouping の場合にインラインでの再ソートを回避するために設定するcolModel属性とパラメーターの構成を知っている人はいますか?groupingView

前もって感謝します、

ミケーレ

4

1 に答える 1

0

自動ソートを修正するための1つの回避策は、同じ値のリストを再生成する(同じ順序を再作成する)ためにクライアントが機能できるようにすることです。

まず、グループ化された各列に正しい順序値を強制するJScript関数を準備します。

   /** 
    * Sort type in subgrid's gropued rows
    */
   function sortGroup(cellValus, rowData, ty) {     
       if(ty==='attribute_1')
        return rowData.attr1_order;
       else if(ty==='attribute_2')
        return rowData.attr2_order;
    }

次に、必要な順序値をに挿入しますcolModel

sorttype3番目に、列タイプを使用して、グループ化された各列内の前の関数をトリガーし、順序がどのグループに属しているかを確認します。

  colModel: [
     {name:'nome_attr',index:'nome_attr', sorttype: function (cellValus, rowData) {return sortGroup(cellValus, rowData, 'attribute_1')}, editable:true, editrules:{required:true}, editoptions:{size:27}, align:'center'},
     {name:'desc_attr', index:'desc_attr', editable:true, editrules:{required:false}, edittype: "textarea",editoptions:{rows:5, cols:25}, hidden:true},
     {name:'valore',index:'valore', sorttype: function (cellValus, rowData) {return sortGroup(cellValus, rowData, 'attribute_2')},editable:true, editrules:{required:false}, editoptions:{size:30}, width:120},
      .....
     {name:'attr1_order',index:'attr1_order', editable:false, hidden:true},
     {name:'attr2_order',index:'attr2_order', editable:false, hidden:true}
     ]
于 2012-10-05T07:38:26.653 に答える