我不相信 gridComplete 事件会按照 documentation 中的指定“在所有数据加载到网格且所有其他进程完成之后”运行。 。
我有一个正在正确加载的网格。在 gidComplete 事件中,我会触发一些过滤方法(.extend 和 .setGridParam),以便在加载网格后立即应用过滤器。但是,尽管我的自定义函数正在触发(通过控制台看到),但过滤器并未被应用。如果我使用 setTimeout 将执行延迟一秒(左右),那么实际上会应用过滤器。所以在我看来 gridComplete 触发得太早了。
顺便说一句,过滤器函数(称为 setGridFilter())也会在绑定(bind)到选择菜单(用户可以从预设过滤器选项中进行选择)的 onchange 事件中触发。这非常有效。只是此函数的 gridComplete 调用失败了。
$("#list3").jqGrid({
url: 'blah.php',
colNames: ['blah1','blah2','etc.','PresentationTemplateID'],
colModel: [name: 'blah1', index: 'blah1'],
[name: 'blah2', index: 'blah2'],
[name: 'etc.', index: 'etc.'],
[name: 'PresentationTemplateID', index: 'PresentationTemplateID', hidden:true]
viewRecords:true,
loadonce: true,
pager: '#pager3',
search:true,
gridComplete: function(){
//var t = setTimeout('setGridFilter()',1000); //this works, for some reason
setGridFilter(); //this does not
}
});
function setGridFilter() {
var postdata = $("#list3").jqGrid('getGridParam','postData');
var text = $("#ddlGridFilterMenu").val(), f;
$.extend(postdata,{filters:'',searchField: 'PresentationTemplateID', searchOper: 'eq', searchString: text});
$("#list3").jqGrid('setGridParam', { search: text.length>0, postData: postdata });
$("#list3").trigger("reloadGrid",[{page:1}]);
}
最佳答案
尝试改用loadComplete
。
关于javascript - Trirand 的 jqGrid 的 gridComplete 事件的计时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7529662/