关于jqGrid postData参数缓存或累加的解决办法

关于jqGrid postData参数缓存或累加的解决办法

维护公司项目的时候,踩到了前同事留下的关于jqGrid的坑,记录并分享一下:

项目里的一个页面点击列表详情弹出div模态窗口,窗口中有一个jqGrid表格,这个窗口在页面中第一次弹出时加载数据正常,关掉再次打开时,加载的数据和前一次一样。在网上找了好多解决办法试了都不灵,最后自己解决,如下:

前代码:

$("#jqGrid").jqGrid({
						    	url : xxxx,
						    	datatype:"local",
						    	postData:{'params':vm.Tourlist},
						    	//data:{'params':vm.Tourlist},
						    	mtype:"POST",
						    	datatype: "json",
						        colModel: [			
						           ....
						        ],
								viewrecords: true,
						        //height: 385,
						        rowNum: 10,
								rowList : [10,30,50],
						        rownumbers: true, 
						        rownumWidth: 25, 
						        autowidth:true,
						        multiselect: false,
						        pager: "#jqGridPager",
						        jsonReader : {
						            root: "page.list",
						            page: "page.currPage",
						            total: "page.totalPage",
						            records: "page.totalCount"
						        },
						        prmNames : {
						            page:"page", 
						            rows:"limit", 
						            order: "order"
						        },
						        gridComplete:function(){
						        	//隐藏grid底部滚动条
						        	$("#jqGrid").closest(".ui-jqgrid-bdiv").css({ "overflow-x" : "hidden" }); 
						        }
						    });

修改后代码:

$("#jqGrid").jqGrid({
						    	url : xxxx,
						    	datatype:"local",
						    	postData:{'params':vm.Tourlist},
						    	//data:{'params':vm.Tourlist},
						    	mtype:"POST",
						    	datatype: "json",
						        colModel: [			
						            ......
						        ],
								viewrecords: true,
						        //height: 385,
						        rowNum: 10,
								rowList : [10,30,50],
						        rownumbers: true, 
						        rownumWidth: 25, 
						        autowidth:true,
						        multiselect: false,
						        pager: "#jqGridPager",
						        jsonReader : {
						            root: "page.list",
						            page: "page.currPage",
						            total: "page.totalPage",
						            records: "page.totalCount"
						        },
						        prmNames : {
						            page:"page", 
						            rows:"limit", 
						            order: "order"
						        },
						        gridComplete:function(){
						        	//隐藏grid底部滚动条
						        	$("#jqGrid").closest(".ui-jqgrid-bdiv").css({ "overflow-x" : "hidden" }); 
						        },
						        beforeRequest: function(){
						        	
						        	var postData = $("#jqGrid").jqGrid("getGridParam", "postData");
						        	console.log(postData)
						        	var i = 0;
									$.each(postData, function (k, v) { 
										if(postData[k] == 'params'){
											i++;
											postData[v] == vm.Tourlist;
										} 
										
									});
									if(i == 0) {
										postData.params = vm.Tourlist;
									}
						        }
						    }).trigger("reloadGrid");

添加了beforeRequest事件中的代码和trigger(“reloadGrid”)方法,测试成功!

不过不知道什么原理,对postData做了操作,第二次打开弹窗不会请求后台,所以加上了trigger(“reloadGrid”)方法。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值