【发布时间】:2021-01-27 21:16:50
【问题描述】:
我正在使用 JQGrid(jQuery jQgrid 不是 Gurrido)版本 4.6.0,我需要一个仅在网格第一次完成时启动的事件。我尝试了loadComplete 和gridComplete,但似乎两者都做或多或少相同的事情(每次我过滤/分页网格时它们都会启动)。
我想在第一次加载页面时应用默认过滤器。我写了这段代码来过滤网格:
f.rules.push({field: "ETAT_PROJ_",op:"eq",data:projOver})
grid[0].p.search = true
$.extend(grid[0].p.postData,{filters:JSON.stringify(f)});
grid.trigger("reloadGrid",[{page:1,current:true}]);
但我找不到执行它的事件。 我也试过这个:
$().ready(function() {
var f = {groupOp:"AND",rules:[]};
f.rules.push({field: "ETAT_PROJ_",op:"eq",data:projOver})
grid[0].p.search = true
$.extend(grid[0].p.postData,{filters:JSON.stringify(f)});
grid.trigger("reloadGrid",[{page:1,current:true}]);
})
我还尝试使用 searchoption 属性直接在我的colModel 的定义中应用过滤器:
{name: "ETAT_PROJ_", hidden: true,search:true,searchoptions:{dataInit:1, attr:{title:1}}},
在网格定义中也是如此:
search: true,
postData: {'filters': '{"groupOp":"AND","rules":[{"field":"ETAT_PROJ_","op":"eq","data":"1"}]}'},
但是没有任何工作可以按我的意愿工作(第一次加载网格时我仍然拥有所有数据)但是当我执行操作时(例如分页)应用过滤器...
编辑 - 解决方案示例
经过一些研究,我找到了一种在第一次加载时应用默认过滤器的方法。这肯定不是最好的方法,但这是我找到的唯一方法。 :)
setTimeout(function() {
grid = $("table#jqGrid-table-projets");
console.log("load default filter")
f = {groupOp:"AND",rules:[]}
f.rules.push({field:"ETAT_PROJ_",op:"eq",data:"1"});
grid[0].p.search = true
$.extend(grid[0].p.postData,{filters:JSON.stringify(f)});
grid.trigger("reloadGrid",[{page:1,current:true}]);
}, 1500)
【问题讨论】:
标签: javascript jquery jqgrid