2013-04-01 81 views
1

这里的情况是:我有一个按钮,当我点击它,它会执行一些语句,我想它来显示一些状态信息。标签文本不改变

protected void Button1_Click(object sender, EventArgs e) 
{ 
    //executes some statements 
    //shows some status message like "Done" 
} 

我想用一个标签文本来显示不同的状态消息,但标签文本只显示最新状态消息的方法完成时。它不显示中间状态消息....我在做什么错了?

+0

你想更新的每个方法完成后的标签吗?或者在所有方法运行后更新标签都可以吗? –

+0

每个方法完成后 – coffeeak

+0

伴侣,这将无法正常工作。 Aspx只会在回发(或部分)之后刷新页面,除非您使用的是在客户端运行的JavaScript。请记住,要改变你的页面,必须有一个帖子到服务器和一个响应。否则您的页面不知道服务器端正在进行。 –

回答

1

ASP.Net不工作,你正在试图获得它的方式。整个方法将完成(将标签更新为唯一的一个最终值),然后渲染页面(使用标签的最终值)。

我可以想出两种方法来执行您要查找的内容:

1)编写一堆Web Service方法,并用ajax调用每个方法。每次调用ajax后更新客户端的标签(div)。

2)页面呈现后立即重新提交页面(当前操作完成)。你仍然需要保持页面的状态,以知道你当前正在处理的内容(例如4个操作中的2个)(增加一个隐藏的表单变量或会话变量,然后在页面加载中使用该变量的值如果IsPostback决定怎么办。)

0

如果你想显示这个的所有状态。您可以使用其他控件(例如Listbox)来处理将在每次执行中调用的数组/列表状态。

1

或尝试做这样的:

Label1.Text = "First Status"; 
// Do something 
Label1.Text += "\nSecond Status"; 
// Do something again 
Label1.Text += "\nDone!!"; 
+0

'\ N'将无法正常工作,你应该使用''
是 –

+0

,你是对的,应该是
Ruly

1

您也可以使用文字,这将使一些格式也

<asp:Literal ID="ltrlMessages" runat="server"></asp:Literal> 

protected void Button1_Click(object sender, EventArgs e) 
{ 
    ltrlMessages.Text = "status message one"; 
    // 
    //executes some statements 
    // 
    ltrlMessages.Text += "</br> status message two"; 
    // 
    //some other statements 
    // 
    ltrlMessages.Text += "</br> status message three and so on"; 

} 
0

尝试

Label1.Text="starting stuff"; 
this.refresh(); 
//do stuff 
Label2.Text="finishing stuff"; 

this.refresh( )会导致屏幕在方法中间重新绘制,而不是在默认情况下结束。