Javascript 在加载Jqgrid之前和加载grid之后,我应该在哪里使用方法来阻止屏幕?

Javascript 在加载Jqgrid之前和加载grid之后,我应该在哪里使用方法来阻止屏幕?,javascript,jquery,jqgrid,Javascript,Jquery,Jqgrid,我已经用java脚本编写了一个功能,可以阻止屏幕并取消阻止屏幕。阻止屏幕意味着,它会阻止屏幕,因此用户无法单击任何内容(屏幕上会出现加载器图标) UIBlocker有两种方法 1. UIBlocker.blockScreen() // It blocks the screen. 2. UIBlocker.unblockScreen() // It unblocks the screen. 现在,我需要在加载JQGrid时阻止屏幕。我想问我应该在哪里使用UIBlocker.blockScr

我已经用java脚本编写了一个功能,可以阻止屏幕并取消阻止屏幕。阻止屏幕意味着,它会阻止屏幕,因此用户无法单击任何内容(屏幕上会出现加载器图标)

UIBlocker有两种方法

1. UIBlocker.blockScreen()   // It blocks the screen.
2. UIBlocker.unblockScreen()  // It unblocks the screen.
现在,我需要在加载JQGrid时阻止屏幕。我想问我应该在哪里使用UIBlocker.blockScreen()UIBlocker.unblockScreen()

根据我的发现,UIBlocker.blockScreen应该在beforeRequest事件中使用,因为它在请求数据之前触发。但也有一些在加载之前触发的其他事件,如预处理前、loadBeforeSend。所以我仍然对此感到困惑

第二件事是我应该在哪里使用解锁屏幕。在loadCompletegridComplete

在这里,我找到了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

现在建议我,我应该在哪里使用块屏取消块屏

与jqgrid相关的事件有很多,比如:

  • 请求前
  • 网格完成
  • 装载完成

  • 检查这里的引用

    ,首先可以考虑使用LooUI:“块”选项。这是从服务器加载数据时阻止网格的标准方法。它不会阻塞整个屏幕(web浏览器)


    如果上述方法不是您所需要的,那么您可以实现替代阻塞。解决方案将取决于jqGrid的版本以及您使用的jqGrid分支(、商业版或@Maynak版本的旧jqGrid谢谢你的回答。我已经检查过了。我只是需要一些建议。我想我应该在beforeRequest事件中使用块屏幕,在loadComplete事件中使用解锁。你说什么?是的,jsut就像我们在ajax调用中使用beforeSend()和complete()一样)在这里我们可以显示和隐藏加载器。你可以用同样的方法来使用它。谢谢你的建议。你可以考虑使用<代码>加载项:“块”< /C>选项。首先,要给出你的问题的最佳答案,你必须知道JQGRID使用的是哪一个版本,从哪个分支的JQGRID。(、商业版或旧版jqGrid的jqGrid 4.4.4谢谢你的回答。我想问你为什么在BeforeProcessing中取消阻止?如果在loadComplete中取消阻止呢?@Umer:最好在异步Ajax请求完成后直接取消阻止。用户在以后的处理过程中不可能与页面交互ng,但也有常见的情况:在处理服务器响应时进行例外。因此,如果您只在
    loadComplete
    中取消阻止页面,则页面可能会在例外时保持被阻止。从角度来看,在
    befroeproprocessing
    中取消阻止更安全。此外,我建议您升级jqGrid。好的,谢谢@Oleg、 我将尝试将jqgrid升级到freejqgrid。关于jqgrid的问题,您总是会提供帮助。再次感谢。@Umer:不客气!升级后,我建议您首先使用字体很棒的图标,这会改善jqgrid的外观。您只需包括
    图标集:“fontAwesome”
    选项和CSS(例如
    ,请参阅)。中介绍了许多其他新功能,每个发布版本都有自述。Hmmmm。很高兴听到@Oleg。您仍在升级网格。
    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);
    }
    
    $.jgrid.extend({
        progressBar: function (options) {
            if (options.method === "show") {
                //alert("start blocking");
                UIBlocker.blockScreen();
            } else {
                //alert("stop blocking");
                UIBlocker.unblockScreen();
            }
        }
    });