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];
            });
posted on 2019-04-17 14:00  代码书写人生  阅读(279)  评论(0编辑  收藏  举报