2012-10-30 15 views
6

を適用し、私はjqgridのクライアント側のフィルタ機能を使用しています:jqgridがフィルタ

var opts = { 
      ... 
      loadonce: true, 
      ... 
} 

var grid = jQuery("#Grid"); 
grid.jqGrid(opts) 
grid.jqGrid('navGrid','#mpager',{edit:false, 
            add:false, 
            del:false}, {}, {}, {}, 
            { 
             multipleSearch:true, 
             multipleGroup:true, 
             recreateFilter: true, 
             overlay: 0, 
             tmplNames: ['Not Empty','All','=10kw','fg'], 
             tmplFilters: populateStaticFilters(), 
             }); 

私はいくつかのチェックボックスに基づいて、このように私のカスタムフィルタを構築しています:

var filter = { "groupOp": "OR", 
       "rules": [] 
} 

var rules = { 
    factive : { "field": "Total", "op": "nn", "data": "" }, 
    fempty : { "field": "Total", "op": "nu", "data": "" }, 
    f10 : { "field": "Power", "op": "eq", "data": "10" }, 
    factivetoday : { "field": "LastUpdate", "op": "eq", "data": today }, 
} 

function jqgselectFilter(myfilter){ 
    grid = jQuery("#Grid"); 
    //console.log(myfilter); 
    grid[0].p.search = myfilter['rules'].length>0; 
    jQuery.extend(grid[0].p.postData,{filters:JSON.stringify(myfilter)}); 
    grid.trigger("reloadGrid",[{page:1}]);  
} 

function populateFilter() { 
     filter['rules']=[] 
     if (jQuery('input[name=showactive]').attr('checked')) { 
      filter['rules'].push(rules['factive']); 
     } 
     if (jQuery('input[name=showempty]').attr('checked')) { 
      filter['rules'].push(rules['fempty']); 
     } 
     if (jQuery('input[name=showactivetoday]').attr('checked')) { 
      filter['rules'].push(rules['factivetoday']); 
     } 
     //console.log(filter); 
     jqgselectFilter(filter); 
} 

私の問題は、ということですロード完了時またはグリッド完了時のデフォルト選択に対応するフィルタは適用できません。

grid.jqGrid('setGridParam', { "loadComplete": populateFilter() }); 

実行を少し遅らせると、少しだけすべてが正常に動作します:

setTimeout('populateFilter();',500); 

setTimeoutを使用せずにこれを達成するにはどうしたらいいですか?

答えて

0

下記のグリッドコンプリート方式でお試しください。

grid.jqGrid( 'setGridParam'、{"gridComplete":populateFilter()});