1

我注意到,一旦通过 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;}

如此处所述,并且 in"#myGrid"是一个子网格,其中datatype: local, 表​​示先前已在容器网格中检索到的行。

有谁知道colModel属性的配置和groupingView要设置的参数是为了避免在多分组的情况下进行在线重新排序?

提前致谢,

米歇尔

4

1 回答 1

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}
     ]
于 2012-10-05T07:38:26.653 回答