Изменение курсора в ASP.NET AJAX при асинхронном запросе
UpdateProgress дает возможность отображать информацию о происходящей запросе, но часто пользовать может не видеть её или требуется заблокировать приложение до момента выполнения запроса.
Это можно осуществить, изменив указатель мыши на «Занят» или «Фоновый режим». В ASP.NET это возможно сделать через CSS и InitializeRequest. Заодно мы выключим кнопку на которую кликает пользователь.
<div id="body">
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<script language="javascript" type="text/javascript">
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_initializeRequest(InitializeRequest);
prm.add_endRequest(EndRequest);
function InitializeRequest(sender, args)
{
$get('body').style.cursor = 'wait';
$get(args._postBackElement.id).disabled = true;
}
function EndRequest(sender, args)
{
$get('body').style.cursor = 'auto';
$get(sender._postBackSettings.sourceElement.id).disabled = false;
}
</script>
<div>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Label ID="Label1" runat="server" Text="Обнови меня" />
<br />
<br />
<asp:Button ID="Button2" runat="server" OnClick="Button1_Click" Text="Button" />
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
</div>
В Default.aspx.cs отрабатываем событие клика
protected void Button1_Click(object sender, EventArgs e)
{
Thread.Sleep(5000);
Label1.Text = "Обновился " + DateTime.Now.ToString();
}
3 июля 2007 г. 14:31