jqGrid 순수 프런트엔드 필터링(모든 데이터를 한 번에 로드하고 프런트엔드에서 필터링)

3054 단어 jqGrid개발 노트
/*
	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= 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 속성을 추가해야 합니다. 값이 비어 있으면 불러온 데이터를 저장할 수 있습니다.모든 필터는 이 속성 값 데이터에 대한 필터입니다.
사용 코드는 다음과 같다.
$("#table_list_1").jqGrid({
	datatype: "local",
	readonlydata: [], // 
	height: 'auto',
	autowidth: true,
	shrinkToFit: true
	/**   **/
)}
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();// 

좋은 웹페이지 즐겨찾기