系統在使用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) {