输入型页面保存时遮罩效果避免再次提交的方法

来源:互联网 发布:刀路软件 编辑:程序博客网 时间:2024/06/07 02:10

其实本人的目的是想试验一个这样的功能,前台的按钮在后台事件中能给其他服务器控件赋值,特别是GridView绑定数据这种,但是由于数据量多,这个过程会比较慢,又想在前台加一个等待的遮罩提示,直到数据完全绑定到GridView上,遮罩层才消失。这就必须用Ajax。

刚发现了一种不需要Ajax的方法,但是刷新了整个页面,悲剧大哭若按钮事件执行完后,就跳转去其他页面,就不用介意是否刷新本页面了,最好是输入型页面,不适合数据查询类页面。先见代码,

页面代码:

  <asp:Label ID="lblName" runat="server">abc</asp:Label> <asp:Button ID="btnNone" runat="server" Text="None"  OnClientClick="javascript: bsl_showLoadingDialog('请稍等');"             onclick="btnNone_Click" />


JS代码:
 <script language="javascript" type="text/javascript" src="JScripts/jquery-1.8.3.js"></script>    <script language="javascript" type="text/javascript" src="JScripts/jquery-ui-1.9.2.custom.min.js"></script>    <link type="text/css" rel="Stylesheet" href="Css/jquery-ui-1.9.2.custom.min.css" />    <script language="javascript" type="text/javascript">        var loadingDialog = $('<div id="dialog" title="" width="100%"><p class="center"><img src="Images/loading.gif"/></p><br/><p class="center">Please wait for a little while.</p></div>');        function bsl_showLoadingDialog(title) {   //此处是一个遮罩效果            loadingDialog.dialog({                modal: true,                title: title,                width: 400,                height: 300,                closeOnEscape: false,                resizable: false            });            loadingDialog.parent().find('.ui-dialog-titlebar-close').hide();        }    </script>

C#后台代码:

  protected void btnNone_Click(object sender, EventArgs e)        {            Thread.Sleep(3000);    //此处睡眠3秒,模拟等待时间            lblName.Text = DateTime.Now.ToString();        }


原理分析:按钮的客户端Click事件添加了一个遮罩层,服务端的Click事件执行完后,由于Asp.net页面会重新呈现Render,因此就将遮罩给去掉了