javascript - Trirand 的 jqGrid 的 gridComplete 事件的计时

标签 javascript jquery jqgrid

我不相信 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/

相关文章:

javascript - MySQL连接表时出现: Get all columns except one,

javascript - 检索从 $.getJSON 返回的 Json 对象的属性

jquery - 显示/隐藏 div 并带有向左\向右滑动动画

javascript - 如何禁用将十进制数转换为指数?

Javascript dom 解析故障排除

javascript - 如何使用javascript设置div标签的高度和宽度?

javascript - 使用 JavaScript 更改链接单击时的当前列表元素

javascript - 动画显示和隐藏随机化

asp.net - jqgrid编辑网址: controller action parameters

jquery - 如何在免费的 jqgrid 内联和表单编辑中使元素大小填充单元格大小并增加字体