如何检测页面上的所有jqGrids是否已加载?

时间:2014-02-13 11:14:50

标签: javascript jquery jqgrid jqgrid-asp.net

我使用的是ASP.NET WebForms版本的jqGrid,但我确信相同的事件应该可用作标准网格。

我有一些页面上有多个网格,它可能只有一个,或者可能是几个。我有一个打印按钮,将显示10,000条记录(显示网格上的所有记录),调整大小以适应A4纸张,触发window.print(),然后返回到原始记录计数,并调整网格大小回到100%。

缺少的部分是知道何时触发window.print(),因为我需要等待所有网格加载之前。

我尝试过全局var allGridsLoaded = false;,然后使用Load_Complete事件和beforePageChange来设置var,但显然每个网格都会重置变量I'我不确定如何跟踪它们?

Load_Complete我认为我可以遍历每个网格,但是最简单的方法是判断他们是否已经加载了?

1 个答案:

答案 0 :(得分:2)

我不确定我是否完全理解您的要求。不过在我看来,你需要

  • 获取页面上的网格总数
  • 为所有网格注册“全球”Load_Complete
  • 在开始准备打印之前将计数器设置为网格总数,开始重新加载网格,在“全局”Load_Complete句柄内减少计数器,如果计数器具有值,则递减计数器window.print() 0

所以你真正需要的是上面列表中的两件事。每个网格都将基于空<table>元素构建。 jqGrid将"ui-jqgrid-btable"类添加到所有表中。所以你可以使用

$(".ui-jqgrid-btable")

获取页面上所有网格的jQuery包装器。 $(".ui-jqgrid-btable").length是网格的数量。要为所有网格注册常见的“全局”Load_Complete,您可以使用jqGridLoadComplete(或jqGridAfterLoadComplete)事件(请参阅the documentation):

$(".ui-jqgrid-btable").bind("jqGridLoadComplete", function (e, data) {
    // ...
});

有关其他信息,请参阅the answer

我希望你能够以这种方式实现所有要求。