2013-03-11 44 views
0

如何在方法运行时更新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

是啊,还是http://msdn.microsoft.com/sv-se/library/system.web.httpresponse.flush.aspx – 2013-03-11 15:16:34

+2

你在试着什么?上面的代码将显示'DONE'。你想要某种进度条吗? – 2013-03-11 15:20:23

+0

我认为你应该使用客户端视角。您可以使用Javascript和Ajax调用完成您的目标。如果这适合你,请告诉我,我为你发布一个例子。 – gustavodidomenico 2013-03-11 15:26:08

回答

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。

您可以使用webservice或通用处理程序来执行服务器端方法。

How to create webservice

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

ajax调用只是谜题的一部分,您还需要让服务器端代码完成工作并公开某种可以使用ajax进行轮询的Web服务或等效服务。 – Servy 2013-03-11 15:34:21

+0

我还没有写出完整的解决方案,只是方向。 – speti43 2013-03-11 15:36:15

+0

但是你甚至没有描述剩下的工作要完成,而你只是展示/讨论了较大目标的一小部分。我并不是说你应该为整个事情展示完整的代码,因为它太简单了,但是甚至没有提到有很多服务器端的工作要做,这意味着答案也会丢失许多。 – Servy 2013-03-11 15:38:41

0

这听起来像你想显示一些任务在服务器上运行的进度。 signalr库将允许您从服务器发送实时更新到客户端。因此任何时候任务完成任务的阶段(状态1,状态2等),它都会向具有新状态的监听客户端发送更新。

您也可以每隔几秒从服务器获取一些javascript请求任务状态并将其显示给用户。

+0

这样的事情? doThings1(); RegisterStartupScript(“”,“”); doThings2();等等 – 2013-03-11 15:40:42

2

这不是一件容易的事,它是一个桌面应用程序的方式。您需要启动异步操作,在请求结束后继续执行,您需要让客户端不断轮询服务器以获取进度更新,并且服务器端异步代码需要更新某种共享状态(即会话,数据库,视图状态等)轮询方法可以读取进度。所有这些都非常低效(特别是如果你有很多用户这样做)并且需要一些时间来编写。 Here是MSDN上的一个例子,它可以帮助您了解涉及的内容。