其实本人的目的是想试验一个这样的功能,前台的按钮在后台事件中能给其他服务器控件赋值,特别是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('请稍等');"
οnclick="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,因此就将遮罩给去掉了