从后端获得响应后,网格重新加载无法正常工作,但在点击网格中的任何排序按钮后,我可以看到网格上应用了过滤器。
这里我已静态声明过滤器代码。
网格代码在
之下jQuery("#grid").jqGrid({
url:'getList.php?mode=result_list',
datatype: "json",
height: 255,
width: 600,
colNames:['Index','Name', 'Code','Result'],
colModel:[
{name:'item_id',index:'item_id', width:65, sorttype:'integer',searchoptions:{sopt:['eq','ne','le','lt','gt','ge']}},
{name:'item',index:'item', width:150, sorttype:'string',searchoptions:{sopt:['eq','bw','bn','cn','nc','ew','en']}},
{name:'item_cd',index:'item_cd', width:100} ,
{name:'result',index:'result', width:100,sorttype:'string',searchoptions:{sopt:['eq','ne']} ],
rowNum:50,
rowTotal: 200,
loadonce:true,
mtype: "GET",
rownumWidth: 40,
gridview: true,
pager: '#pager451',
sortname:'item_id',
viewrecords: true,
sortorder: "asc",
loadComplete: function() {
$("#foo").trigger( "click" );
},
caption: "Loading data from server at once" });
jQuery("#grid").jqGrid('filterToolbar',{searchOperators : true});
Foo Click函数jquery位于
之下$("#foo").on( "click", function() {
var grid=$("#grid");
var dddf={"groupOp":"AND","rules":[{"field":"item_id","op":"eq","data":"123"}]};
jqgselectFilter(dddf);
});
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}]);
}
答案 0 :(得分:1)
我不确定我是否理解正确,但我认为您可以通过将loadComplete
修改为以下内容来解决问题:
loadComplete: function () {
if ($(this).jqGrid("getGridParam", "datatype") !== "local") {
// initial loading from the server
setTimeout(function () {
$("#foo").trigger("click");
}, 50);
}
}
您将datatype: "json"
与loadonce: true
一起使用。因此,在从服务器加载后,datatype
将更改为"local"
,在调用loadComplete
之后将更改为。因此,可以测试datatype
是否不等于"local"
来检测第一次加载。我将在第一次加载时执行的操作放在setTimeout
内,以允许jqGrid完成初始处理(例如更改datatype
)。