2014-12-25 38 views
0

它可能很簡單,但我無法弄清楚。我在updatePanel中有一個簡單的聯繫表單,當用戶按下發送按鈕時,標籤應該在發送前出現。完成後,應該說類似「消息發送」。簡單地改變標籤文字的方法

Application.DoEvents()會做的伎倆,但是,是的,我們是在asp.net ... 我曾嘗試多線程,但仍lblMessageSend文本更改爲「發送電子郵件。請等待。」消息已發送後。除此之外被非線程安全的力所能及,仍然無法正常工作..

protected void btnSend_Click(object sender, EventArgs e) 
{ 
    lblMessageSend.Text = "Sending e-mail.. Please Wait.."; 
    lblMessageSend.Visible = true; 
    ThreadStart t1 = new ThreadStart(SendMessage); 
    Thread thr = new Thread(t1); 
    thr.Start(); 
} 

private void SendMessage() 
{ 
    //do some sending stuff 
    lblMessageSend.Text = Resources.strings.quotationMessage; 
} 

HTML

</tr> 
    <tr> 
    <td> 
    </td> 
    <td> 
     <asp:Button ID="btnSend" runat="server" Text="Send" ValidationGroup="Form" TabIndex="12" OnClick="btnSend_Click" /> 
    </td> 
</tr> 
    <tr> 
    <td> 
    </td> 
    <td> 
     <asp:Label ID="lblMessageSend" runat="server" Visible="false" Text="<%$ Resources:strings, quotationMessage%>"></asp:Label> 
    </td> 
</tr> 
+1

您可以在這種情況下使用JavaScript,使用onClientClick按鈕來更改按鈕時的標籤文本。然後在該方法中,您可以像背後一樣更改代碼背後的標籤文本。 –

+0

我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –

回答

1

THX @Black男爵。

  <tr> 
      <td> 
      </td> 
      <td> 
       <asp:Button ID="btnSend" runat="server" Text="Send" ValidationGroup="Form" OnClientClick="ChangeLabelText();" TabIndex="12" OnClick="btnSend_Click" /> 
      </td> 
     </tr> 
      <tr> 
      <td> 
      </td> 
      <td> 
       <asp:Label ID="lblMessageSend" runat="server" Text=""></asp:Label> 
      </td> 
     </tr> 

的Javascript:

<script type="text/javascript"> 
if (Page_ClientValidate()) { //to check if the validationFields are validated.. 
       document.getElementById('<%= lblMessageSend.ClientID %>').innerHTML = 'Sending.. Please wait..'; 
      } 
</script> 

說實話,我有種的事實,我還是要使用JavaScript來把事情做好失望。但它有效,這很重要。

+0

仍然只有一個問題,當我有正則表達式或字段驗證器,它不會檢查第一個.. – CularBytes