BlockUI 是一个相当不错的jQuery插件,它可以轻易设定页面指定区域显示执行中文字(如 Loading...)并锁定该区域限制输入。简单的说,若我们希望网页在执行PostBack 或 Ajax 更新的过程中,希望能限制输入或重复按钮并显示处理中讯息的话,那 BlockUI 是相当不错的选择,接下来我们就来示范如何在 ASP.NET 中使用 BlockUI。
BlockUI 是 jQuery 的插入,所以要下载 jQuery 及 BlockUI 插入的 js 檔 (jquery.js 及 jquery.blockUI.js),相关档案可由下列连结下载
jquery.js:http://jquery.com/
jquery.blockUI.js:http://malsup.com/jquery/block/ (该网站有 BlockUI 使用的详细说明)
在 VS2005 新增一个 ASP.NET AJAX 网站专案,将 jquery.js 及 jquery.blockUI.js 档案复制至网站 js 数据夹,并在页面中的 head 区块加入引用
1: <head runat="server">
2: <title>jQuery BlockUI Plugin</title>
3: <script src="js/jquery.js" type="text/javascript"></script>
4: <script src="js/jquery.blockUI.js" type="text/javascript"></script>
5: </head>
在页面中加入 UpdatePanel 控件,并在 UpdatePanel 中置入一个 Button,aspx 程序代码如下
1: <form id="form1" runat="server">
2: <asp:ScriptManager ID="ScriptManager1" runat="server" />
3: <div>
4: <asp:UpdatePanel ID="UpdatePanel1" runat="server">
5: <ContentTemplate>
6: <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
7: </ContentTemplate>
8: </asp:UpdatePanel>
9: </div>
10: </form>
在 Button 的 Click 事件中撰写等待 3 秒的程序代码,这是为了呈现 BlockUI 的效果。
1: Protected Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
2: Dim N1 As Integer
3: For N1 = 1 To 3
4: System.Threading.Thread.Sleep(1000)
5: Next
6: End Sub
使用 BlockUI 插件相当容易,只要页面 submit 时呼叫 $.blockUI() 就会显示 BlockUI,而页面载入时呼叫 $.unblockUI() 隐藏 BlockUI。
所以在页面 Page Load 事件中撰写如下程序代码。
1: Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
2: Dim sScript As String
3:
4: '页面执行 Submit 时显示 blockUI
5: sScript = "$.blockUI();"
6: ScriptManager.RegisterOnSubmitStatement(Me, Me.GetType(), "blockUI", sScript)
7:
8: '页面载入时隐藏 blockUI
9: sScript = "$.unblockUI();"
10: ScriptManager.RegisterStartupScript(Me, Me.GetType(), "unblockUI", sScript, True)
11: End Sub
执行结果如下,因为 $.blockUI() 未指定区域,所以会将整个页面 Lock 并显示 "Please wait..." 的讯息。当执行结束时,就会呼叫 $.unblockUI() 来隐藏 BlockUI。
若我们希望将显示的文字改为「数据加载中...」并加入等待图示的话,可以在 $.blockUI() 传入 message 参数,程序代码修改如下
1: '页面执行 Submit 时显示 blockUI
2: sScript = "$.blockUI({" & _
3: "message: '<h3></br><img src=""busy.gif"" /> 数据加载中...</h3>'" & _
4: "});"
5: ScriptManager.RegisterOnSubmitStatement(Me, Me.GetType(), "blockUI", sScript)
执行结果如下