2012-04-23 44 views
4

私は現在、仕事中のプロジェクトで作業しています。何らかの理由でテキストボックスのtextchangedイベントが発生していません。私は自分のコードにブレークポイントを入れようとしましたが、彼はそこに着くわけではありませんので、イベントは起こっていません。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/en-us/library/system.data.sqlclient.sqlcommand.parameters.aspx)を使用してください。 – Botz3000

+0

おそらく、メソッドをpublicにしてみてください。それが重要かどうかはわかりません。 – svinja

+0

あなたのアプリ/ページがViewStateを有効にしているかどうか確認してください。 –

答えて

1

CausesValidationがfalseに設定されていることを確認してください。

関連する問題