【问题标题】:jqgrid on load complete apply filterjqgrid 加载完成应用过滤器
【发布时间】:2012-10-19 16:26:10
【问题描述】:

我正在使用 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 的情况下实现这一点?

【问题讨论】:

    标签: jquery jqgrid


    【解决方案1】:

    你能试试下面提到的网格完成方法吗?

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-28
      • 2021-01-27
      • 2015-02-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多