从服务器端使用弹出窗口时的BlockUI

omriman12

我正在使用UpdatePanel在较长的过程中阻止UI,我的问题是当我放置一个简单的按钮时它可以工作,但是当按钮在弹出窗口中时它不起作用(只是卡住,直到该过程完成而没有阻止用户界面)。

起作用的代码:

<asp:UpdatePanel runat="server" ID="updatePanel">
  <Triggers>
    <asp:AsyncPostBackTrigger ControlID="lb_start" />
  </Triggers>
  <ContentTemplate>
      <asp:UpdateProgress runat="server" ID="upprogress" AssociatedUpdatePanelID="updatePanel" DisplayAfter="0">
            <ProgressTemplate>
                <div style="position: fixed; text-align: center; height: 100%; width: 100%; top: 0; right: 0; left: 0; z-index: 9999999; background-color: #000000; opacity: 0.7;">
                    <asp:Image ID="imgUpdateProgress" runat="server" ImageUrl="~/images/iguloader-yashar.gif" AlternateText="Loading ..." ToolTip="Loading ..." Style="padding: 10px; position: fixed; top: 45%; left: 50%;" />
                </div>
            </ProgressTemplate>
        </asp:UpdateProgress>
        <asp:LinkButton runat="server" ID="lb_start" class="btn btn-success" OnClick="lb_start_Click"><i class="fa fa-start"></i> Start</asp:LinkButton>            
  </ContentTemplate>
</asp:UpdatePanel>

服务器端:

protected void lb_start_Click(object sender, EventArgs e)
{
    //long process
}

不起作用的代码(使用colorbox.js):

<asp:UpdatePanel runat="server" ID="updatePanel">
  <Triggers>
    <asp:AsyncPostBackTrigger ControlID="lb_start" />
  </Triggers>
  <ContentTemplate>
      <asp:UpdateProgress runat="server" ID="upprogress" AssociatedUpdatePanelID="updatePanel" DisplayAfter="0">
            <ProgressTemplate>
                <div style="position: fixed; text-align: center; height: 100%; width: 100%; top: 0; right: 0; left: 0; z-index: 9999999; background-color: #000000; opacity: 0.7;">
                    <asp:Image ID="imgUpdateProgress" runat="server" ImageUrl="~/images/iguloader-yashar.gif" AlternateText="Loading ..." ToolTip="Loading ..." Style="padding: 10px; position: fixed; top: 45%; left: 50%;" />
                </div>
            </ProgressTemplate>
        </asp:UpdateProgress>
        <a runat="server" id="a_start" class="inline" href="#startModal" title="Start scan"><span  class="btn btn-success"><i class="fa fa-play"></i></span></a>        
  </ContentTemplate>
</asp:UpdatePanel>

<div id="startModal" style="padding:10px; background:#fff;">
    <h2>Start Scan</h2>
    Click ok to continue:
        <asp:LinkButton runat="server" ID="lb_start" class="btn btn-success" OnClick="lb_start_Click"><i class="fa fa-start"></i> Start</asp:LinkButton>
</div>

试着玩一点,有什么想法吗?

泰勒·詹姆斯·哈登(Tyler James Harden)

您可以使用称为blockui的jQuery插件(足够有趣)完成此任务。

这里的链接显示了一个示例:https : //gist.github.com/whoshotjr/3010693

只需包括可从http://malsup.com/jquery/block/获得的jquery.blockui.js

然后在您的项目中包含以下代码:

<script type="text/javascript">
        Page = Sys.WebForms.PageRequestManager.getInstance();
        Page.add_beginRequest(OnBeginRequest);
        Page.add_endRequest(endRequest);

        function OnBeginRequest(sender, args) {
            $.blockUI();
        }
        function endRequest(sender, args) {
            $.unblockUI();
        }

 </script>

由于您正在运行客户端,因此在执行Web请求时几乎总是必须使用Javascript来阻止UI。我在MVC中使用了与此类似的设置,但最终都相同。希望这可以帮助!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Android:使用Parse时使用服务器端

在服务器端渲染时使用cookie的ReactJS

在服务器端使用容器

使用 angular 等框架时服务器上服务器端脚本的文件结构

为触发ASP.NET/VB.NET中的模式弹出窗口的按钮添加服务器端事件

未在服务器端定义React Gatsby窗口

服务器端验证失败时返回什么

使用服务器端处理时未显示DataTables加载消息

使用服务器端渲染时,React Checksum失败

使用动态 slug 时,服务器端渲染如何在 Nuxt 上工作?

仅在初始页面加载时使用服务器端渲染

不想在使用 PDFBox 时将创建的 PDF 文件保存在服务器端

反应服务器端渲染时使用process.env

仅在执行服务器端数据时在javascript中使用eval是否安全?

使用Meteor和Meteor Up时如何监视服务器端日志

使用angular js时如何执行服务器端重定向

使用服务器端处理时,防止为初始页面加载数据

使用angular 2 titleService和服务器端渲染调用setTitle时为500

Marklogic 服务器端 Javascript:使用显式提交时的 XDMP-CONFLICTINGUPDATES

尝试在EPiServer中使用ReactJS.Net服务器端渲染时出现错误

当我部署 iam 时收到此错误:服务器端渲染期间“窗口”不可用

使用Angular Material处理服务器端错误

在服务器端使用NTLM检查URL

在服务器端使用Node JS解析HTML

数据表服务器端-使用HTML

使用viperHTML进行服务器端渲染

如何使用MySQL管理服务器端进程

使用异步数据获取的服务器端渲染

如何在服务器端使用JSON Sanitizer?