在jqgrid中如何在排序后保持网格状态

时间:2012-11-05 11:28:58

标签: jquery jqgrid

在服务调用之后增加jqgrid中的特定列,然后我使用sortable:true,sortorder:asc,sorttype:int进行自动排序。               当我排序时,列中的值没有恢复它消失然后网格被排序。在这种情况下,任何人都可以帮助我,这样我即使在排序后也可以恢复我的价值。

here is the code, 

$('#gridValue)
      .jqGrid(
           {

            datastr :parsedObj,
            datatype :'jsonstring',
            height :140,
            width :240,
            colNames : [ "Id","Name","Count" ],
            colModel : [ {
               name :'id',
               index :'id',
               width :30,
               align :'left',
               sortable :true
            }, {
               name :'name',
               index :'name',
               width :30,
               align :'left'
            }, {
               name :'count',
               index :'count',
               width :20,
               align :'left',
               sortable :true
             }],

             rowNum :20,
             sortname : 'id',
             sorttype :'int',
             scroll :true,
             viewrecords :true,
             shrinkToFit :false,
             hoverrows :true,
             cellEdit :true,
             loadonce :true,
             sortorder :'asc',

               jsonReader : {
                   root :'paramValue',
                   repeatitems :false,
                   page : function(parsedObj) {
                   return 1;
                   },
                   total : function(parsedObj) {
                   return 1;
                   },
                   records : function(parsedObj) {
                   }
                   },
               gridComplete : function() {
                   var gridTable = document
                            getElementById("gridValue");
                   var gridTableCount = gridTableCount.rows.length;
                   if (gridTableCount> 1) {
                      for (countId = 1; countId < gridTableCount; countId++) {
   document.getElementById("gridValue").rows[countId].cells[2].innerHTML = '0';                                                                   }
                                                                }
                                                        }
                                        });     
                        $("#gridValue").setGridParam({
                                sortname : 'count',
                                sortorder : 'asc'
                        }).trigger('reloadGrid');
                   }

//After service call i will be calling this function to update value in grid
function incrementingValue(){
     document.getElementById("gridValue").rows[countId].cells[2].innerHTML =1;
}

但是在网格中自动排序后,值不会保留。请给我一个解决方案

1 个答案:

答案 0 :(得分:1)

将id列更改为

{            名称:'id',            index:'id',            宽度:30,            对齐:'左',            sortable:是的,            formatter:incrementingValue         }

然后在网格代码之后添加一个函数来处理增量

var counter; //when calling the service you can increase your value to the counter
function incrementingValue(cellvalue, options, rowObject) {
    //var cellValueInt = parseInt(cellvalue); // this bring the existing cell value
    return counter=1;
    }
};