jquery - jqgrid 加载完成后应用过滤器

标签 jquery 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 的情况下实现此目的?

最佳答案

您可以尝试使用下面提到的 Grid Complete 方法吗?

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

关于jquery - jqgrid 加载完成后应用过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13137169/

相关文章:

javascript - 包含可拖动到多个元素

javascript - 我怎样才能顺利地 "pinch"一个包含文本的元素?

javascript - 如何使 JQuery 响应?

css - 如何避免 zurb 函数样式覆盖 jqgrid/jquery ui 样式?

jqgrid。改变主题

jquery - 在jQgrid中实现删除

javascript - Netbeans 中用于 javascript 的代码折叠

javascript - jQuery .when 函数没有正确等待?

jquery - JQGrid 获取特定列的所有值,而不考虑分页

asp.net-mvc - jqGrid中的日期选择器,简单的例子?