如何在方法运行时更新aspx页面中的标签?也许使用AJAX(更新面板)?
private void button_Click(object sender, EventArgs e)
{
doThings1();
label.Text = "Status1";
doThings2();
label.Text = "Status2";
doThings3();
label.Text = "Done";
}
我想一步一步地展示。当doThings1()完成时该方法正在运行,显示“Status1”,doThings2()完成,显示“Status2”......这样,标签不显示“Status1”和“Status2”,只是该过程完成后“完成”。我想一步一步地展示。
答案 0 :(得分:2)
这不是一件容易的事,就像在桌面应用程序中那样。您需要启动一个在请求结束后将继续的异步操作,您需要让客户端不断轮询服务器以获取有关进度的更新,并且服务器端异步代码将需要更新某种共享状态(即会话,数据库,视图状态等,轮询方法可以从中读取进度。它周围的效率非常低(特别是如果你有很多用户这样做)并且需要一些时间来编写。 Here是MSDN上的一个示例,可以帮助您了解所涉及的内容。
答案 1 :(得分:0)
听起来您想要显示服务器上正在运行的某些任务的进度。 signalr库允许您从服务器向客户端发送实时更新。因此,只要任务完成任务的阶段(Status1,Status2等),它就会向具有新状态的侦听客户端发送更新。
您也可以每隔几秒钟从服务器请求一些javascript请求任务状态并将其显示给用户。
答案 2 :(得分:0)
规则是:1个请求 - >一个回应。 不同的方法: 您可以使用3个asyncron javascript调用执行这些方法,并在成功回调时设置标签文本。
http://api.jquery.com/jQuery.ajax/
示例:
$.ajax({
type: "POST",
url: "URL.asmx/doThings1",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(result) {
// result will be "done" from the function of webservice below.
// set the first label text
},
error: function(xmlHttpRequest, status, err) {
alert(xmlHttpRequest.statusText + " " + xmlHttpRequest.status + " : " + xmlHttpRequest.responseText);
}
});
重复这些调用3次,并在不同的功能中进行修改。 您可以使用jquery或纯javascript在客户端处理您的buttonclick。
您可以使用Web服务或通用处理程序来执行服务器端方法。
[WebMethod]
public string doThings1()
{
return "done";
}