jqGrid以setGridParam方式postData,包含历史数据的问题
Posted xstarmoony
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jqGrid以setGridParam方式postData,包含历史数据的问题相关的知识,希望对你有一定的参考价值。
系统在使用jqGrid时,如果某些页面的查询项是复选框,后台是数组接收的,就会出现传值不正确问题。
1、项目中某查询页面存在的复选框:待处理S1,正在处理S2,已处理S3;
使用jqGrid提交查询数据方法如下:
datatype : "json",
postData:
"id" : $("#id").val(),
"nodeStatus" : checkBoxValues("nodeStatus")
).trigger("reloadGrid", [ page: 1]);
2、该问题调查如下:
postData: id:123456 , nodeStatus : [S0]
第二次传值:id传1234567,勾选正在处理
postData:id :1234567 , nodeStatus : [S1]
第三次传值:勾选待处理、正在处理
postData:nodeStatus : [S0, S1]
第四次传值:勾选待处理、已处理
postData:nodeStatus : [S0, S2]
第五次传值:勾选待处理、正在处理、已处理
postData:nodeStatus : [S0, S1, S2]
第六次传值:勾选正在处理、已处理
postData:nodeStatus : [S1, S2, S2]
第七次传值:勾选待处理、已处理
postData:nodeStatus : [S0, S2, S2]
第八次传值:勾选已处理
postData:nodeStatus : [S2, S2, S2]
不难发现,它会启用上次提交的历史数据,并将本次提交的数据对应替换,如果是单个值还好,如果是数组那么就会出现问题。
3、解决该问题方式:
A、在jqGrid内使用serializeGridData 事件,此事件返回一个要传到后台的序列化数据,这里进行重新赋值后返回发到后台:
B、简单粗暴的方法,每次请求前都将历史数据清除掉:
var postData = $("#xxTable").jqGrid("getGridParam", "postData");
$.each(postData, function (k, v)
以上是关于jqGrid以setGridParam方式postData,包含历史数据的问题的主要内容,如果未能解决你的问题,请参考以下文章
jqgrid postData setGridParam 调用多次时查询条件累加的问题--详情页查询导致的无法在新的页面中查询