Javascript 在加载Jqgrid之前和加载grid之后,我应该在哪里使用方法来阻止屏幕?
我已经用java脚本编写了一个功能,可以阻止屏幕并取消阻止屏幕。阻止屏幕意味着,它会阻止屏幕,因此用户无法单击任何内容(屏幕上会出现加载器图标) UIBlocker有两种方法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
1. UIBlocker.blockScreen() // It blocks the screen.
2. UIBlocker.unblockScreen() // It unblocks the screen.
现在,我需要在加载JQGrid时阻止屏幕。我想问我应该在哪里使用UIBlocker.blockScreen()和UIBlocker.unblockScreen()
根据我的发现,UIBlocker.blockScreen应该在beforeRequest事件中使用,因为它在请求数据之前触发。但也有一些在加载之前触发的其他事件,如预处理前、loadBeforeSend。所以我仍然对此感到困惑
第二件事是我应该在哪里使用解锁屏幕。在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
现在建议我,我应该在哪里使用块屏和取消块屏?与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();
}
}
});