避免使用Multi Grouping在JQGrid中对行进行客户端排序

时间:2012-10-04 09:19:27

标签: jquery-ui jquery jquery-plugins jqgrid

我注意到,一旦通过ajax getJSon()检索值列表,JQGrid中的多分组会引发行排序以重新排列内联。 有时,重新排序会将多个组中相同元素的组拆分为应有的。

我想解决方案是避免客户端重新排序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是子网格,其中colModel表示先前已在容器网格中检索到的行。

是否有人知道要设置的groupingView属性和{{1}}参数的配置是什么,以避免在多重分组的情况下进行内联重新排序?

提前感谢,

米歇尔

1 个答案:

答案 0 :(得分:0)

修复自动排序的一种解决方法是允许客户端工作以重新生成相同的值列表(重新创建相同的顺序)。

首先,准备一个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

中注入所需的订单值

第三,触发每个分组列中sorttype内的上一个函数,使用列类型知道该订单属于哪个组:

  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}
     ]