【问题标题】:Timing of gridComplete event with Trirand's jqGrid使用 Trirand 的 jqGrid 的 gridComplete 事件的时间安排
【发布时间】:2011-09-23 13:26:10
【问题描述】:

我不相信 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}]);
}

【问题讨论】:

  • 谢谢,@graphicdivine——我尝试使用 loadComplete,但同样失败。

标签: javascript jquery jqgrid


【解决方案1】:

尝试改用loadComplete

【讨论】:

    猜你喜欢
    • 2014-11-24
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多