我不相信gridComplete事件会在documentation中指定的“在将所有数据加载到网格中并且完成所有其他过程之后”运行。

我有一个正确加载的网格。在gidComplete事件中,我将触发一些过滤方法(.extend和.setGridParam)以在加载网格后立即应用过滤器。但是,尽管我的自定义功能正在触发(通过控制台查看),但未应用过滤器。如果我使用setTimeout将执行延迟一秒钟(或大约一秒钟),则实际上将应用该过滤器。因此在我看来,gridComplete触发得太早了。

顺便说一句,筛选器函数(称为setGridFilter())也会在绑定到选择菜单的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

09-13 08:47