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

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

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

UIBlocker有两种方法.

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

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

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

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

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

beforeRequest
loadBeforeSend
serializeGridData
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.)
beforeProcessing
gridComplete
loadComplete

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

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

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

loadui: "disable",// remove the standard grid blocking
loadBeforeSend: function () {
    UIBlocker.blockScreen(); // block the grid/screen
    return true;    // allow request to the server
},beforeProcessing: function () {
    UIBlocker.unblockScreen(); // unblock the grid/screen
    return true;    // process the server response
},loadError: function (jqXHR,textStatus,errorThrown) {
    UIBlocker.unblockScreen(); // unblock the grid/screen

    // display the eror message in some way
    alert("HTTP status code: " + jqXHR.status + "\n" +
        "textStatus: " + textStatus + "\n" +
        "errorThrown: " + errorThrown);
}

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

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

$.jgrid.extend({
    progressBar: function (options) {
        if (options.method === "show") {
            //alert("start blocking");
            UIBlocker.blockScreen();
        } else {
            //alert("stop blocking");
            UIBlocker.unblockScreen();
        }
    }
});

猜你在找的jQuery相关文章