2013-06-03 29 views
0

我試圖生成文本框,當我按下按鈕添加更何況這是代碼的onclick框TextChanged不火

protected void Add_TextBoxes(object sender, EventArgs e) 
     { 
      int index = int.Parse(ViewState["pickindex"].ToString()); 
      TextBox MyTextBox = new TextBox(); 
      MyTextBox.ID = "tbautogenerated"+index.ToString(); 
      MyTextBox.Text = "tbautogenerated" + index.ToString(); 
      MyTextBox.Width= 250; 
      MyTextBox.MaxLength = 128; 
      MyTextBox.Attributes.Add("runat", "server"); 
      MyTextBox.CausesValidation = false; 
      MyTextBox.AutoPostBack = true; 
      MyTextBox.TextChanged += new EventHandler(MyTextBox_TextChanged); 
      picktexts.Controls.Add(MyTextBox); 

     } 

void MyTextBox_TextChanged(object sender, EventArgs e) 
    { 
     TextBox MyTextBox = sender as TextBox; 
    } 

,但是當我在文本框中改變框TextChanged不起作用! !怎麼了 ?

HTML代碼

<asp:UpdatePanel ID="UpdatePanel2" runat="server"> 
       <ContentTemplate> 
        <div id="picktexts" runat="server"> 
        <asp:TextBox ID="txtAdress" runat="server" MaxLength="128" Width="250" /> 
        <asp:RequiredFieldValidator ControlToValidate="txtAdress" Display="Dynamic" ID="rfvAddress" Text="* Required" runat="server" /> 
        <asp:Button ID="bt_addtxtbox" runat="server" Text="Add more" OnClick="Add_TextBoxes" CausesValidation="false" /> 
        </div> 
        </ContentTemplate> 
        </asp:UpdatePanel> 
+1

添加一個斷點以確保其執行該部分。 –

+2

出現新的文本框,但不訂閱文本更改事件? –

+0

你是什麼意思,不起作用?當你在文本框中輸入內容時,你希望事件發生嗎?因爲如果是這樣,它應該只在默認情況下在帖子之間觸發。 – Renan

回答

0

我覺得事件處理迷路的帖子之間。 ASP.NET工作的方式,每次將頁面發回自己時,所有對象都會再次實例化,並且它們的狀態將從ViewState中恢復。通常情況下,在aspx中聲明的控件將通過其標籤中的聲明重新關聯自己,事情並非如此。

因此,請嘗試在頁面加載期間再次關聯事件處理程序。像這樣:

void Page_Load (object sender, EventArgs e) 
{ 
    foreach (Control c in picktexts.Controls) 
    { 
     ((TextBox)c).TextChanged += new EventHandler(MyTextBox_TextChanged); 
    } 
} 

然後看看它是否有效。

+0

我加倍HTML textchange是不同的。但是當焦點改變時,卡爾塔爾至少應該看到回貼事件。 – Yogee

+0

當焦點發生變化時,我看到回發事件,但我無法從picktext中獲得文本框,它爲空! – kartal

+1

正如Renan所說,ViewState將在每個帖子後面重新創建。你可以參考一下我在我的評論中分享的鏈接嗎(評論方式10日)? – Yogee