数据类型:'jsonstring'在Jqgird版本中忽略了totalpages和totalrecord版本5.2.1

问题描述:

我最近将jqgrid从版本3升级到5.2.1, 虽然这样做我在从服务器端返回数据时遇到了独特的问题。数据类型:'jsonstring'在Jqgird版本中忽略了totalpages和totalrecord版本5.2.1

我想要的只是从服务器端发送80条记录,总记录数为280,page = 1和totalpage = 4,但是我的jqgrid总是显示第1页,并显示80条记录的视图1 - 80和ROWNUM是80

应当从280显示1-80和页1的4

好像我的jqGrid忽略总页数和totalrrecords。

这里是我的jqGrid代码:

jQuery("#tradeList").jqGrid(
{ 
jsonReader : { 
     id : "0" 
    }, 
    url : 'getDetailAgingReportInternal.go', 
    datatype : 'jsonstring', 
    mtype : 'POST', 
    datastr : '{"page":' + data.page + ',"total":' 
      + data.totalPages + ',"records":' + data.total 
      + ',"rows": ' + data.rowData + '}', 
    colModel : data.colModel, 
    pager : '#pagerTrade', 
    rowNum : data.records, 
    rowList : [ 80, 160, 240 ], 
    viewrecords : true, 
    height: "350", 
    width : "auto", 
    viewsortcols : [ true, 'vertical', true ], 
    multiselect : data.multiselect, 
    multiboxonly: true, 
    onPaging : function(pgButton) { 
     var pageNo = getPageNo("tradeList"); 
     var rowCount = getRowCount("tradeList"); 

     loadDetailAgingReport(1, postData.bucketType, postData.mode, postData.modeType, '', '', postData.entity, 
          '', postData.entityId, postData.statusTypeId, postData.tradeTypeIdJson, postData.isOTC, 
          pageNo, rowCount, '', false, false); 

     return 'stop'; 
    }, 
    onSortCol : function(index, columnIndex, sortOrder) { 
     //alert("index:"+index+", columnIndex:" +columnIndex + ", sortOrder:" +sortOrder); 
     var colSort = {}; 
     colSort.index = getColumnIndex("tradeList", columnIndex); 
     colSort.direction = sortOrder; 
     var colSortList = [ colSort ]; 
     var pageNo = getPageNo("tradeList"); 
     var rowCount = getRowCount("tradeList"); 

     loadDetailAgingReport(1, postData.bucketType, postData.mode, postData.modeType, postData.colHeader, postData.statusType, postData.entity, 
       postData.colName, postData.entityId, postData.statusTypeId, postData.tradeTypeIdJson, postData.isOTC, 
       pageNo, rowCount, colSortList, false, false); 

     return 'stop'; 
    }, 
gridComplete:function(){ 

} 
}); 

我首先调用Ajax调用然后再送价值创造的jqGrid使用的数据类型为jsonstring。 任何人都可以提出任何建议。

嗨托尼, 因为数据是我的服务器端的实际响应我做了这样的事情。 但似乎不工作。我不想调用ajax,因此我直接使用addJSONData。我在谷歌上搜索,但都使用ajax调用。有没有其他方式可以将数据类型编写为函数。

datatype : function(data) { 
           var thegrid = this;//jQuery("#plist")[0]; 
           thegrid.addJSONData(data.rowData); 
          }, 

数据是JSON字符串由含有页,记录,taotaPages,colMode,行等

可以请你提出任何服务器接收。

+0

除了少数例外,jsonstring与本地数据类型相同。当网格中的数据忽略页面等参数并根据将来会被使用的构建数据数组计算这些参数。 jsonstring后,数据类型自动设置为本地。所以我的问题是为什么你需要本地80个记录,但想显示另一个记录数?目标是什么? –

+0

我总共有280条记录,但我想每页显示80条,所以当我点击下一个按钮时,它应该显示81到160条记录中的280条。这在我定义数据区的旧版本中正常工作,它读取由服务器,但新版本忽略它的任何建议。 –

我建议你使用数据类型json并配置jsonReader以从服务器获取数据。从3.x升级到5.x并不容易。如果您在使用json config时遇到困难,请告诉我们

+0

嗨托尼,如果我将数据类型更改为json,那么我必须在代码中进行很多我不想执行的更改。我正在升级以获得3.x不支持的Frozen列功能。你能告诉我任何稳定的版本可以支持Forzen和我提到的功能。 –

+0

我已经将我的版本降级到5.0.2,现在它似乎在第一页上正常工作,它显示84(总记录)的1-80和2页中的1,但是当我点击下一页时,它显示81- 84(共84个,4个记录将显示在下一页)和第2页1.任何建议。 –

+0

在这种情况下,一种可能的解决方案是使用数据类型作为函数。请参阅[Guriddo jqGrid文档](http://www.guriddo.net/documentation/guriddo/javascript/user-guide/basic-grid/#datatype-as-function)。这个想法是使用参数而不是字符串,而是调用addJSONData函数。你可以很容易地将你的JSON字符串转换为对象使用JSON.parse或在Guriddo jqGrid函数的构建$ .grid.parse() –