2011-04-11 93 views
5

我已經在我的.aspx頁面中一個TextBox:OnTextChanged事件在不觸發

<ajax:UpdatePanel ID="UpdatePanel2" runat="server"> 
    <ContentTemplate> 
     <asp:TextBox ID="txtCity" AutoPostBack="true" OnTextChanged="txtCity_TextChanged" 
      Width="90%" runat="server" ></asp:TextBox> 
    </ContentTemplate> 
</ajax:UpdatePanel> 

後面的代碼:

protected void txtCity_TextChanged(object sender, EventArgs e) 
{ 
    lblMessage.Text = "you have typed:" + txtCity.Text; 
} 

而對於lblMessage [相同的.aspx頁面]:

<ajax:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
    <ContentTemplate> 
     <asp:Label ID="lblMessage" runat="server" Text="" ></asp:Label> 
    </ContentTemplate> 
</ajax:UpdatePanel> 

但是當我在文本框中輸入時。 lblMessage未更新。

如何糾正?

+0

當你說「當我在文本框中輸入」時,你的意思是,當你輸入文本框並提交它的權利? – 2011-04-11 16:56:57

+0

即使假定服務器端方法會真正執行(除非您按照Drackir的說法提交,否則給定您當前的代碼將不會執行),您在忘記更新標籤文本後忘記在UpdatePanel1上調用'.Update()'。 – 2011-04-11 17:02:06

+0

@Drackir我想要的是顯示我在文本框中鍵入的文本而不回發。 – Chris 2011-04-11 17:07:28

回答

9

聽起來好像您在考慮在您輸入文本框時觸發OnTextChange事件。這不是真的。 OnTextChange是服務器端事件,只有當頁面(或面板)回發時纔會觸發。在頁面上鍵入文本框不會回發頁面,因此只有在您提交表單後纔會觸發此事件。

在這種情況下,您實際上想要做的事情是使用JavaScript事件的onkeypress一些JavaScript來更新標籤文本,因爲事物被輸入到文本框中。 JavaScript在客戶端上運行,不需要您回發該頁面以便運行。

+0

太傷心了。我正在嘗試同樣的事情): – Kristopher 2016-01-21 21:07:31