2012-04-23 224 views
4

我目前正在開發一個項目,並且由於某種原因,我的文本框的textchanged事件沒有被觸發。我試圖在我的代碼中放置一個斷點,但他沒有到達那裏,所以他的事件不是解僱imo。C# - TextBox TextChanged事件沒有觸發

<FooterTemplate> 
       <asp:TextBox ID="TextBoxSiteAlias" runat="server" AutoPostBack="true" OnTextChanged="TextBoxSiteAlias_TextChanged"></asp:TextBox> 
       <ajaxToolkit:AutoCompleteExtender 
            runat="server" 
            id="AutoCompleteExtenderSiteAlias" 
            targetcontrolid="TextBoxSiteAlias" 
            servicemethod="GetSiteAliasList" 
            minimumprefixlength="2" 
            completioninterval="1000" 
            enablecaching="true" 
            completionsetcount="12" /> 
      </FooterTemplate> 

這是我的GridView中的FooterTemplate。

protected void TextBoxSiteAlias_TextChanged(object sender, EventArgs e) 
    { 
     string query = @"select distinct (isnull([site_address1], '') 
          +isnull([site_address2], '') 
          +isnull([site_address3], '') 
          +isnull([site_address4], '') 
          +isnull([site_address5], '')) as 'Site_adresse' , 
          city, 
          country, 
          [site_id] as 'siteID' 
          FROM [Henkel].[dbo].[tbl_Henkel_site_info_upload] 
          WHERE site_id = '" + ((TextBox)GridView1.FooterRow.FindControl("TextBoxSiteAlias")).Text + "'"; 
     conn.Open(); 
     SqlCommand cmd = new SqlCommand(query, conn); 
     SqlDataReader myReader = cmd.ExecuteReader(); 
     DataTable myTable = new DataTable(); 
     myTable.Load(myReader); 
     conn.Close(); 
     if (myTable.Rows.Count > 0) 
     { 
      ((TextBox)GridView1.FooterRow.FindControl("TextBoxSiteAddress")).Text = Convert.ToString(myTable.Rows[0]["Site_adresse"]); 
      ((TextBox)GridView1.FooterRow.FindControl("TextBoxSiteCity")).Text = Convert.ToString(myTable.Rows[0]["city"]); 
      ((TextBox)GridView1.FooterRow.FindControl("TextBoxSiteCountry")).Text = Convert.ToString(myTable.Rows[0]["country"]); 
      ((TextBox)GridView1.FooterRow.FindControl("TextBoxIBSSiteID")).Text = Convert.ToString(myTable.Rows[0]["siteID"]); 
     } 
     else 
     { 
      ((TextBox)GridView1.FooterRow.FindControl("TextBoxSiteAddress")).Text = ""; 
      ((TextBox)GridView1.FooterRow.FindControl("TextBoxSiteCity")).Text = ""; 
      ((TextBox)GridView1.FooterRow.FindControl("TextBoxSiteCountry")).Text = ""; 
      ((TextBox)GridView1.FooterRow.FindControl("TextBoxIBSSiteID")).Text = ""; 
     } 
    } 

這是一旦專用文本框失去焦點時應該調用的函數。

我一直在許多論壇上尋找理由,但所有這些答覆表明文本框需要AutoPostBack屬性(我的)。

小注意事項:我有同樣的項目(爲我們公司的另一項交易提供所有相同的功能,並且在該項目中工作正常)我已將項目代碼複製到新項目並更改了所有查詢+連接字符串)

希望有人能幫助我呢? :)

非常感謝

凱文

+5

只是說,你構造SQL命令字符串的方式看起來很危險。更好地使用[SqlCommand.Parameters](http://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqlcommand.parameters.aspx)添加參數。 – Botz3000 2012-04-23 07:40:58

+0

也許試試讓方法公開。不知道這是否重要。 – svinja 2012-04-23 07:40:59

+0

檢查您的應用/頁面是否打開了ViewState – 2012-04-23 07:42:15

回答

1

確保CausesValidation設置爲false。

相關問題