var searchClick=false;//判断是否是第一次点击搜索 //当搜索按钮被单击时触发 function searchData(){ //创建jqGrid组件 console.log(\'正在搜索\'); var ele=jQuery(\'#searchForm\'); var search=\'\'; var searchArr=[]; for(item in ele[0]){ if(ele[0][item]!==null&&ele[0][item].name!==undefined&&ele[0][item].value!=undefined&&ele[0][item].name.length>0){ // if(ele[0][item].type.indexOf(\'checkbox\')>-1){//如果是复选框 // search.length<1?(search=ele[0][item].name+\'=\'+ele[0][item].checked):(search+=\'&\'+ele[0][item].name+\'=\'+ele[0][item].checked); // searchArr[ele[0][item].name]=ele[0][item].checked; // }else{ search.length<1?(search=ele[0][item].name+\'=\'+ele[0][item].value):(search+=\'&\'+ele[0][item].name+\'=\'+ele[0][item].value); searchArr[ele[0][item].name]=ele[0][item].value; //} } } if(!searchClick){ jQuery("#tableDataSearch").jqGrid( { url : \'url?\'+search,//组件创建完成之后请求数据的url datatype : "json",//请求数据返回的类型。可选json,xml,txt overrite : true, colNames : [\'单号\',\'金额\',\'预约单号\',\'日期\',\'提成金额\',\'是否退单\'],//jqGrid的列显示名字 colModel: [ //jqGrid每一列的配置信息。包括名字,索引,宽度,对齐方式..... {name: \'HBillNum\',index: \'HBillNum\',width:85,editable: false}, {name: \'HAmount\',index: \'HAmount\',width:85,editable: false}, {name: \'HOrderNo\',index: \'HOrderNo\',width:85,editable: false}, {name: \'HBillDate\',index: \'HBillDate\',width:85,editable: false}, {name: \'Commission\',index: \'Commission\',width:85,editable: false}, {name: \'Hredordernum\',index: \'Hredordernum\',width:85,editable: false}, ], height:\'600\', width:window.screen.availWidth-400, viewrecords: true,//是否在浏览导航栏显示记录总数 rownumbers:true, rowNum : 10000, pager : \'#paper2\', sortname:\'HBillDate\',//默认的排序列名 sortorder : "desc", //autowidth:true, footerrow:true, onSelectRow:function(id){ currentSelectedRecord={\'HBillNum\':jQuery(jQuery(\'#\'+id)[0][\'innerHTML\'])[1].innerHTML, }; }, loadComplete: function() { var grid = $("#tableDataSearch"); var ids = grid.getDataIDs(); if($(this).getGridParam(\'userData\') == \'ceod1\'){ $.messager.alert(\'提示\',\'请把线上小程序的APPid填上\'); }else if(ids.length < 1){ $.messager.alert(\'提示\',\'"未查到所符合数据\'); } for (var i = 0; i < ids.length; i++) { grid.setRowData ( ids[i], false, {height: 25} ); } //数据汇总 var HAmount=parseFloat(jQuery(this).getCol(\'HAmount\', false, \'sum\')).toFixed(2); var Commission=parseFloat(jQuery(this).getCol(\'Commission\', false, \'sum\')).toFixed(2); $(this).footerData("set", {rn:\'合计\', HAmount:HAmount,Commission:Commission,}); } }).trigger("reloadGrid"); test=\'\'; /*创建jqGrid的操作按钮容器*/ /*可以控制界面上增删改查的按钮是否显示*/ jQuery("#tableDataSearch").jqGrid(\'navGrid\', \'#paper2\', {edit : false,add : false,del : false}); searchClick=true; }else{ var params={}; Object.assign(params,searchArr); var postData = $(\'#tableDataSearch\').jqGrid("getGridParam", "postData"); $.each(postData, function (k, v) { delete postData[k]; }); jQuery("#tableDataSearch").jqGrid(\'setGridParam\', { url:\'url?\'+search, datatype:\'json\', postData: postData, page: 1 }).trigger(\'reloadGrid\'); } return false; }
出现这种问题一开始以为是缓存之类的东西,但是后台经过查询发现这个应该是jqgrid组件的BUG,jqgrid的方法 setGridParam方法自身会累加postdata的值”,需要像清空属性那样(delete property_name)清空上次请求参数才行。
我的方法
var postData = $(\'#tableDataSearch\').jqGrid("getGridParam", "postData");
$.each(postData, function (k, v) {
delete postData[k];
});