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];
});