看着Oleg solution jqgrid过滤,我写了一个代码来过滤我的jqgrid。它有不同的有3个不同的研究领域,但只有一个按钮来执行全局搜索。它工作的很好,但即使第一次搜索正确执行,第二次搜索执行2次,第三次搜索4次,第四次8次等等,如果我进行大量搜索,会导致几个问题。 下面的代码:jqgrid过滤器奇怪的行为
var grid= $("#mygrid");
function executeSearchInSoftgrid() {
$("#executeSearch").click(function() {
f = {groupOp:"AND",rules:[]};
var searchFiler = $("#filterField1").val(), f;
var searchFiler2 = $("#filterField2").val(), f;
var searchFiler3 = $("#filterField3").val(), f;
if (searchFiler.length === 0) {
grid[0].p.search = false;
$.extend(grid[0].p.postData,{filters:""});
}
if (searchFiler2.length === 0) {
grid[0].p.search = false;
$.extend(grid[0].p.postData,{filters:""});
}
if (searchFiler3.length === 0) {
grid[0].p.search = false;
$.extend(grid[0].p.postData,{filters:""});
}
f.rules.push({field:"field1",op:"cn",data:searchFiler});
f.rules.push({field:"field2",op:"cn",data:searchFiler2});
f.rules.push({field:"field3",op:"cn",data:searchFiler3});
grid[0].p.search = true;
$.extend(grid[0].p.postData,{filters:JSON.stringify(f)});
grid.trigger("reloadGrid",[{page:1,current:true}]);
alert("searching");
});
}
无论我调用函数(loadcomplete,gridcomplete,readyfunction)的行为是一样的。有任何想法吗??? 感谢
编辑
此处,我调用该函数的地方,最后和它的工作原理:
var initialize = true;
$("#mygrid")
.jqGrid({
gridComplete:function() {
if(initialize == true) {
executeSearchInSoftgrid();
initialize = false;
//....
}
我检查了我的js文件,我在loadcomplete中只调用了一次executeSearchInSoftgrid() – Franky 2012-07-30 16:39:54
@Franky:'loadcomplete'将在每个网格刷新**上调用**。因此,您可以在每个网格重新加载/分页/排序/过滤时绑定越来越多的事件。创建网格后,您应该将代码移出'loadcomplete'。 – Oleg 2012-07-30 16:44:53
尝试在gridcomplete,loadcomplete,readyfunction .. 的行为总是相同的,警报弹出1,2,4,8,16 ..次 – Franky 2012-07-30 16:56:38