我正在尝试完成一些看起来不应该太难的事情,但我似乎找不到有效的方法。
我正在从 asp.net 页面调用数据库上的存储过程。该过程可能需要一些时间,具体取决于那里的数据量。
我想做的只是显示一条消息,说请在任务完成时稍候。
问题是,在使用消息更新页面后,我无法找到调用该过程的方法。无论我做什么,页面更新总是被数据库调用阻塞。
我首先尝试使用多视图。用户单击一个按钮,我将视图更改为等待消息。从这一点开始,我无法等待页面重新发布和更新,然后调用数据库过程。
我正在尝试完成一些看起来不应该太难的事情,但我似乎找不到有效的方法。
我正在从 asp.net 页面调用数据库上的存储过程。该过程可能需要一些时间,具体取决于那里的数据量。
我想做的只是显示一条消息,说请在任务完成时稍候。
问题是,在使用消息更新页面后,我无法找到调用该过程的方法。无论我做什么,页面更新总是被数据库调用阻塞。
我首先尝试使用多视图。用户单击一个按钮,我将视图更改为等待消息。从这一点开始,我无法等待页面重新发布和更新,然后调用数据库过程。
您有几个选项,您可以使用AJAX Control Toolkit
和 UpdateProgress 控件,或者您可以使用jQuery
和调用数据库调用WebMethod
或Web Service
。
AJAX Control Toolkit
http://www.asp.net/ajax/documentation/live/overview/UpdateProgressOverview.aspx
jQuery implementation
[WebMethod]
public void PerformDatabaseOperation() {
// Your database code here
}
要向您的 执行请求Web Method
:
$.ajax({
type: "POST",
url: "./YourPage.aspx/PerformDatabaseOperation",
error: function(XMLHttpRequest, textStatus, errorThrown){
alert(textStatus);
},
success: function(result){
alert("success");
}
});
您必须有一个div
作为消息的占位符:
<div id="LoadingMessage">
Please wait....
</div>
$('#LoadingMessage').hide()
.ajaxStart(function() {
$(this).show();
})
.ajaxStop(function() {
$(this).hide();
});
每次执行数据库调用时,您都会看到加载消息。
UpdateProgress 控件简介
http://msdn.microsoft.com/en-us/library/bb386421%28v=vs.100%29.aspx
In this tutorial you will use UpdateProgress controls to display the progress of partial-page updates. If a page contains UpdatePanel controls, you can also include UpdateProgress controls to keep users informed about the status of partial-page updates. You can use one UpdateProgress control to represent the progress of partial-page updates for the whole page. Alternatively, you can include an UpdateProgress control for every UpdatePanel control. Both of these patterns are shown in this tutorial.