• jqgrid点击搜索无法重置参数问题


    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',85,editable: false},
                            {name: 'HAmount',index: 'HAmount',85,editable: false},
                            {name: 'HOrderNo',index: 'HOrderNo',85,editable: false},
                            {name: 'HBillDate',index: 'HBillDate',85,editable: false},
                            {name: 'Commission',index: 'Commission',85,editable: false},
                            {name: 'Hredordernum',index: 'Hredordernum',85,editable: false},
                        ],
                        height:'600',
                        width:window.screen.availWidth-400,
                        viewrecords: true,//是否在浏览导航栏显示记录总数
                        rownumbers:true,
                        rowNum : 10000,
                        pager : '#paper2',
                        sortname:'HBillDate',//默认的排序列名
                        sortorder : "desc",
                       //autotrue,
                        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];
                });
  • 相关阅读:
    Controlling behavior of existing services in system
    获取站点路径方法
    如何处理DataTable.Select();执行后重新排序的问题!
    ASP.NET 2.0 编程珠玑之五调试已创建好的代码
    Meal Scheduler in C#
    DHTML+Ajax? MXML+ActionScript? XAML+C#? 是巧合,还是必然?
    C#验证输入的是否数字
    Monitoring System Usage using Windows Service
    ADO.NET 2.0中的DataSet和DataTable
    使用asp.net 2.0和SQL SERVER 2005构建多层应用
  • 原文地址:https://www.cnblogs.com/zdzdbk/p/10723116.html
Copyright © 2020-2023  润新知