方法运行时更新标签

时间:2013-03-11 15:14:38

标签: c# asp.net ajax

如何在方法运行时更新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”,只是该过程完成后“完成”。我想一步一步地展示。

3 个答案:

答案 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服务或通用处理程序来执行服务器端方法。

How to create webservice

[WebMethod]
    public string doThings1()
    {
        return "done";
    }