1

情况如下:我有一个按钮,当我单击它时,它将执行一些语句,我希望它显示一些状态消息。

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

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

4

5 回答 5

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";

}
于 2013-04-01T06:12:57.780 回答
1

ASP.Net 无法按照您尝试的方式工作。整个方法将完成(将标签更新为一个且只有一个最终值),然后渲染页面(使用标签的最终值。)

我可以想到两种方法来做你正在寻找的东西:

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

2) 页面呈现后立即重新提交页面(当前操作完成)。您仍然需要保持页面状态以了解您当前在进程中的位置(例如 4 个操作中的 2 个)(增加隐藏的表单变量或会话变量,然后在页面加载中使用该变量的值决定如果发生什么情况IsPostback。)

于 2013-04-01T02:50:57.660 回答
1

或者尝试这样做:

Label1.Text = "First Status";
// Do something
Label1.Text += "\nSecond Status";
// Do something again
Label1.Text += "\nDone!!";
于 2013-04-01T03:39:26.593 回答
0

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

于 2013-04-01T03:21:28.363 回答
0

尝试

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

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

于 2013-06-21T16:37:19.713 回答