2009-08-08 11 views
0

テキストボックスとボタンがあるページがあります。ページが読み込まれると、たびたびフォーカスがテキストボックスの1つに表示され、このようなことは起こりたくありません。しかし、ページロードイベントでsetfocusのようなものを使いたくないのは、ボタンをクリックするとページがジャンプするためです。ページの読み込みに重点を置くために、テキストボックスやコントロールを使用しないようにするにはどうすればよいですか?ページのテキストボックスがページロードに注目されているのはなぜですか?

+0

基本的には、別のページからリダイレクトした結果、ページが読み込まれたときに、テキストボックスにフォーカスを設定せず、通常はページを読み込むだけですが、ページ上のコントロール、そのコントロールの上または近くでフォーカスを維持します。 – Joe

答えて

1

strange。デフォルトでは、フォーカスを設定しない限り、ページはどのフォーム入力にもフォーカスしません。

私はあなたがページ上のSetfocusによってすべてのフォーカスをキャンセルしなければならないと思います。別のページからリダイレクト の結果として ページのロードが、ページは通常、任意のテキストボックスにちょうど 負荷をフォーカスを設定しないで ないとき

protected void Page_Load(object sender, EventArgs e) 
{ 
    // make sure its not a postback 
    if (!IsPostBack) 
    { 
     // your code 
     InitForm(); 
     InitBlaBlaBla(); 
     SetFocusOnThis(); 
     SetFocusOnThat(); 

     // cancel all focus 
     Focus(); 
    } 
    else 
    { 
     // this is a postback, 
     // set focus on control which make post back 
     Control control = null; 

     if (!string.IsNullOrEmpty(Page.Request.Params[postEventSourceID])) 
     { 
      control = Page.FindControl(Page.Request.Params[postEventSourceID]); 
     } 
     else 
     { 
      // if postEventSourceID is null, its a button 
      // find it by iterating all controls 

      foreach (string ctl in Page.Request.Form) 
      { 
       Control c = Page.FindControl(ctl); 
       if (c is System.Web.UI.WebControls.Button) 
       { 
        control = c; 
        break; 
       } 
      } 
     } 

     // finally 
     control.Focus(); 

    } 
} 
+0

ページの読み込みを引き起こしたコントロールを検出できますか? – Joe

+1

できますか。私は –

+0

の私の答えを編集しますが、私はボタンonclickイベントを使用することをお勧めします。イベントハンドラメソッドでボタン送信者に焦点を合わせることができます。 –

1

は基本的に私が何をしたいのか、ですページの コントロールをクリックした結果、 ページが読み込まれた場合は、そのコントロールの上または近くにフォーカス を保持してください。あなたが戻ってポストをテストする必要があり、これを達成するために

。ページがポストバックされたことを検出した場合は、意図したとおりにコントロールにフォーカスを設定できます。それ以外の場合は、ページが再度ポストバック(GET)されないため、コントロールのフォーカスを避けることができます。

私が知る限り、既定では、ASP.NET Webformはtextboxのいずれにも焦点を当てません。 textboxに焦点を合わせるコードビハインド方法がないのは確かですか?

+0

私はfreetextboxを使用していますので、これはfreetextboxの問題です。ポストバックでない場合、ページのロードイベントを引き起こしたコントロールにフォーカスを設定できますか? – Joe

0

freetextboxコントロールがIE7とIE6でこの動作を示すことが判明しました。彼らが調査しているバグです。

関連する問題