2012-10-30 10 views
6

używam funkcji filtrowania po stronie klienta jqGrid za:jqGrid na całkowitym obciążeniu zastosować filtr

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(), 
             }); 

buduję moje niestandardowe filtry, jak to na podstawie pewnych wyboru:

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); 
} 

Moim problemem jest to, że Nie mogę zastosować filtra, który odpowiada domyślnemu wybraniu przy pełnym obciążeniu lub w siatce:

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

Jeśli opóźniłem wykonanie wszystkiego, wszystko działa zgodnie z oczekiwaniami:

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

Jak mogę to osiągnąć bez użycia funkcji setTimeout?

Odpowiedz

0

Czy możesz wypróbować metodę Grid Complete, jak wspomniano poniżej.

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

Powiązane problemy