2016-07-19 15 views
1

私はキーワードで研究を行うために使用されるTextBoxを持っています。私は、結果をフィルタリングするためのチェックボックスと、テーブルにキーワードの出現を表示するグラフを持っています。検索は、作成されたボタンをクリックすると実行され、Enterキーをクリックすると機能します。問題は、2つのチェックボックスをチェックしてEnterをクリックすると、研究が行われないか、キーワードを変更してEnterを再度クリックすると、グラフの結果が作成されないということです。ボタンをクリックするかEnterを押すたびに動作します。c#keydown code not working

私はインターネットで見たようにKeyDownを使用していますが、それはanythhingを変更していないので、エラーもありません。

マイコード:

 protected void btnSearch_Click(object sender, EventArgs e) 
     { 
      Populate(); 

     } 

     protected void tbSearch_KeyDown(object sender, KeyEventArgs e) 
     { 
      if (e.KeyCode == Keys.Enter) 
       btnSearch_Click(null, null); 
     } 

誰かが私を助けることができますか?

+5

[mcve]を投稿してください。100行のコードを読む必要はありません。 – DavidG

+3

keydownイベントハンドラは、テキストボックスにバインドされているため、テキストボックスに現在の入力フォーカスがある場合にのみトリガされます。フォームレベルで取得する場合は、フォームKeyPreviewプロパティをtrueに設定し、ハンドラーをフォームkeydownイベントに追加する必要があります – Steve

答えて

0

を、ちょうど

  • 属性のAutoPostBack = "真を追加します"
  • 属性を追加するOnTextChanged =" btnSearch_Click "

、それはjQueryの

せずに、あなたがやりたいだろう - >のAutoPostBack:イベントがトリガされ

サーバーへのポストバック - > OnTextChanged:あなたはテキストボックス(またはEnterキーを押します)から抜け出すときイベントがトリガーされ、検索機能に移動します

1

私は問題を発見しました。私は更新パネルを使用していたとは言いませんでした。 は、だからここに私のために働いコードです:

$('#tbSearch').keydown(function (e) { 
    var key = e.which; 
    if (key == 13) // the enter key code 
    { 
     //your code 
    } 
}); 

のUpdatePanelでそのコードを動作させるために:あなたのテキストボックスに

//On UpdatePanel Refresh. 
var prm = Sys.WebForms.PageRequestManager.getInstance(); 
if (prm != null) { 
    prm.add_endRequest(function (sender, e) { 
     if (sender._postBackSettings.panelsToUpdate != null) { 

      $('#tbSearch').keydown(function (e) { 
       var key = e.which; 
       if (key == 13) // the enter key code 
       { 
        // your code 
       } 
      }); 
     } 
    }); 
};