javascript – 在加载Jqgrid之前和加载网格之后我应该在哪里使用方法来阻止屏幕?

前端之家收集整理的这篇文章主要介绍了javascript – 在加载Jqgrid之前和加载网格之后我应该在哪里使用方法来阻止屏幕?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我在java脚本中编写了一个阻止屏幕并取消阻止屏幕的功能.阻止屏幕意味着它阻止屏幕,因此用户无法点击任何内容(屏幕上出现加载程序图标).@H_502_2@

UIBlocker有两种方法.@H_502_2@

@H_502_2@

  1. 1. UIBlocker.blockScreen() // It blocks the screen.
  2. 2. UIBlocker.unblockScreen() // It unblocks the screen.

现在,我需要在加载JQGrid时阻止屏幕.我想问一下我应该在哪里使用UIBlocker.blockScreen()和UIBlocker.unblockScreen().@H_502_2@

根据我的发现,UIBlocker.blockScreen应该在beforeRequest事件中使用,因为它在请求数据之前触发.但是还有一些其他事件在加载之前就像beforeProcessing,loadBeforeSend一样触发.所以我仍然对此感到困惑.@H_502_2@

第二件事是我应该在哪里使用unblockScreen.在loadComplete中还是在gridComplete中?@H_502_2@

在这里,我找到了jqgrid的执行顺序,@H_502_2@

@H_502_2@

  1. beforeRequest
  2. loadBeforeSend
  3. serializeGridData
  4. loadError (if a error from the request occur - the event from steps 5 till 7 do not execute. If there is no error the event 4. does not execute and we continue to with the step 5.)
  5. beforeProcessing
  6. gridComplete
  7. loadComplete

现在建议我,我应该在哪里使用BlockScreen和unblockScreen?

最佳答案
您可以考虑首先使用loadui:“block”选项.这是在从服务器加载数据期间阻止网格的标准方法.它不会阻止整个屏幕(Web浏览器).@H_502_2@

如果上述方法不是您所需要的,那么您可以实现替代阻止.解决方案将取决于jqGrid的版本以及您使用的jqGrid的分支(free jqGrid,商业Guriddo jqGrid JS或版本中的旧jqGrid< = 4.7).您写道,您使用的是复古版本4.4.4.在没有这么多可能性的情况下,推荐的方法是使用以下选项/回调: @H_502_2@

  1. loadui: "disable",// remove the standard grid blocking
  2. loadBeforeSend: function () {
  3. UIBlocker.blockScreen(); // block the grid/screen
  4. return true; // allow request to the server
  5. },beforeProcessing: function () {
  6. UIBlocker.unblockScreen(); // unblock the grid/screen
  7. return true; // process the server response
  8. },loadError: function (jqXHR,textStatus,errorThrown) {
  9. UIBlocker.unblockScreen(); // unblock the grid/screen
  10. // display the eror message in some way
  11. alert("HTTP status code: " + jqXHR.status + "\n" +
  12. "textStatus: " + textStatus + "\n" +
  13. "errorThrown: " + errorThrown);
  14. }

我提醒你,版本4.4.4是3.5年前发布的复古版本.您应该考虑将其升级free jqGrid的当前版本(4.13.4).它是jqGrid的分支,我在制作主叉商用并将其重命名为Guriddo jqGrid JS后开发(见the old postthe price list).免费的jqGrid可以使用与您当前使用的旧版本4.4.4相同的许可协议免费使用.@H_502_2@

如果你要使用新版本的jqGrid,那么推荐的方法是覆盖jqGrid使用的progressBar方法@H_502_2@

@H_502_2@

  1. $.jgrid.extend({
  2. progressBar: function (options) {
  3. if (options.method === "show") {
  4. //alert("start blocking");
  5. UIBlocker.blockScreen();
  6. } else {
  7. //alert("stop blocking");
  8. UIBlocker.unblockScreen();
  9. }
  10. }
  11. });

猜你在找的jQuery相关文章