情况如下:我有一个按钮,当我点击它时,它将执行一些语句,我希望它显示一些状态消息。
protected void Button1_Click(object sender, EventArgs e)
{
//executes some statements
//shows some status message like "Done"
}
我想过使用标签文本来显示不同的状态消息,但标签文本只显示方法完成时的最后一条状态消息。它没有显示中间状态消息....我做错了什么?
答案 0 :(得分:1)
ASP.Net无法按照您尝试的方式运行。整个方法将完成(将标签更新为一个且只有一个最终值),然后渲染页面(带有标签的最终值。)
我可以想出两种方法来做你想要的事情:
1)编写一堆Web服务方法,并使用ajax调用每个方法。在每次ajax调用后更新客户端的标签(div)。
2)页面呈现后立即重新提交页面(当前操作完成)。您仍然需要保持页面状态以了解您当前在过程中的位置(例如,4个操作中的2个)(增加隐藏的表单变量或会话变量,然后在页面加载中使用该变量的值)决定IsPostback
时要做什么。)
答案 1 :(得分:1)
或尝试这样做:
Label1.Text = "First Status";
// Do something
Label1.Text += "\nSecond Status";
// Do something again
Label1.Text += "\nDone!!";
答案 2 :(得分: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";
}
答案 3 :(得分:0)
如果您想显示此状态的所有状态。您可以使用其他控件(例如Listbox
)来处理将在每次执行中调用的数组/状态列表。
答案 4 :(得分:0)
试
Label1.Text="starting stuff";
this.refresh();
//do stuff
Label2.Text="finishing stuff";
this.refresh()会导致屏幕在方法中间重新绘制,而不是默认情况下在结束时重新绘制。