【问题标题】:Label Text not changing标签文本不变
【发布时间】:2013-04-01 02:41:00
【问题描述】:

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

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

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

【问题讨论】:

  • 是否要在每个方法完成后更新标签?或者在所有方法运行后更新标签是否可以?
  • 每个方法完成后
  • 伙计,这行不通。 Aspx 只会在回发(或部分)后刷新您的页面,除非您使用的是在客户端运行的 javascript。请记住,要更改您的页面,必须有一个到服务器的帖子和一个响应。否则,您的页面不知道服务器端正在发生这种情况。

标签: c# asp.net


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

    或者尝试这样做:

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

    【讨论】:

      【解决方案3】:

      你也可以使用允许一些格式的文字

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

          试试

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-04-09
            • 1970-01-01
            • 2020-01-26
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-02-06
            • 1970-01-01
            相关资源
            最近更新 更多