jqGrid 實現純前端篩選(及一次載入全部資料,在前端篩選)

來源:互聯網
上載者:User
/*jqGrid 前端篩選功能*/function GridSearch(grid){//複製對象this.clone_obj = function(data){var d;if($.type(data) == 'array' ){d = [];            for(i in data){                d[i] = data[i];            }        }else if($.type(data) == 'object'){d = {};            for(i in data){                d[i] = data[i];            }}else{            d = data;        }return d;}//根據索引值刪除指定的元素this.delete_val_by_key = function(keys, arr){for(var j=0,i=0; i<keys.length; i++){arr.splice(keys[i-j], 1);j++;}return arr;}    this.grid = grid;    this.result = [];    this.search_param = null;this.r  = [];    this.data = [];    if(this.data.length == 0){        var data = $(grid).getGridParam('readonlydata');this.data = this.clone_obj(data);    }//console.log(this.data.length);    //初始化result    this.init_result = function(){this.result = this.clone_obj(this.data);    }//初始化 rthis.init_r = function(){this.r = [];}    //設定篩選參數    this.set_search_param = function(search_param){        this.search_param = search_param;    }        //篩選規則    /*模糊篩選*/    this.vagueSearch = function(str, column){this.init_r();        var re = new RegExp(str, "i");// var is = [];        for(var i=0; i<this.result.length; i++){            if(re.test(this.result[i][column])){this.r.push(this.clone_obj(this.result[i]));// is[is.length] = i;            }        }// this.result = this.delete_val_by_key(is, this.result);this.result = this.clone_obj(this.r);    }    /*區間尋找*/    this.betweenSearch = function(start, end, column){this.init_r();// var is = [];        for(var i=0; i<this.result.length; i++){            if(this.result[i][column] >= start && this.result[i][column] <= end){                this.r.push(this.clone_obj(this.result[i]));// is[is.length] = i;            }        }// this.result = this.delete_val_by_key(is, this.result);this.result = this.clone_obj(this.r);    }    /*根據參數選擇規則篩選*/    this.select = function(params){        //var rule_name = params.rule_name;        switch(params.rule_name){            case 'between'://console.log(this.result);                this.betweenSearch(params.start, params.end, params.column);                break;            case 'vague':                this.vagueSearch(params.str, params.column);                break;        }    }    /*清空 result */    this.clearResult = function(){        this.result = [];    }    //執行篩選    this.search = function(){        this.init_result();        this.init_r();        if(this.search_param){            if($.type(this.search_param) == 'array'){                for(var i=0; i <= this.search_param.length; i++){if(this.search_param[i]){this.select(this.search_param[i]);}                }            }else{                this.select(this.search_param);            }        }        //重新載入資料$('#table_list_1').jqGrid('clearGridData');        $(this.grid).jqGrid('setGridParam',{data:this.result}).trigger('reloadGrid');this.clearResult();this.init_r();    }}

使用說明:

需要在初始化的時候添加一個 readonlydata屬性,值為空白即可,用於儲存載入過來的資料。所有的篩選對該屬性值資料篩選。

使用代碼如下

var search_param = new Array(); //用於儲存篩選規則search_param.push({rule_name:'between',start:start_date,end:end_date,column:'datatime'});//篩選規則需要根據規則函數進行屬性設定 rule_name:規則名稱,每個規則名稱對應一個方法,可以通過select方法查看; 後面的屬性選項均為規則對應函數的參數var a = new GridSearch('#table_list_1');//建立執行個體a.set_search_param(search_param);//提交設定規則a.search();//執行搜尋




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.