ASP.NETを始めて初めて作るサイトです。
<asp:TextBox ID="tbx_kikakuUriage1" runat="server" CssClass="txt-center" MaxLength="5" Width="70%" OnTextChanged="calc_UriageGokei1" AutoPostBack="true"></asp:TextBox>
上記のコントロールは、TextChangedイベントで売上の合計を計算するものですが、AutoPostBackのせいで、
フォーカスが消えてしまいます。
なので、その対処としてイベントの最後に次のコントロールにフォーカスを当てるようにしました。
C#
1protected void calc_UriageGokei1(object sender, EventArgs e) 2{ 3 //計算 4 try 5 { 6 var kikaku = tbx_kikakuUriage1.Text.Equals("") ? 0 : int.Parse(tbx_kikakuUriage1.Text); 7 var ippan = tbx_ippanUriage1.Text.Equals("") ? 0 : int.Parse(tbx_ippanUriage1.Text); 8 9 lbl_uriageGokei1.Text = (kikaku + ippan) + ""; 10 } 11 catch (Exception ex) 12 { 13 lbl_uriageGokei1.Text = ""; 14 } 15 calc_arari1(null, EventArgs.Empty); 16 17 //フォーカスを次のコントロールに移す 18 if (sender == null) return; 19 if (sender.Equals(tbx_kikakuUriage1)) 20 { 21 tbx_kikakuUriage2.Focus(); 22 } 23 else 24 { 25 tbx_ippanUriage2.Focus(); 26 } 27}
すると、フォーカスが当たったコントロールがページの一番下に表示される場所までスクロールが移動してしまいます。
どうすれば、スクロールが動かずにフォーカスだけ次に移すことが出来るのでしょうか。
追記
開発環境
Win7 Pro 64bit
VS2013 Pro
Chrome 最新版
他のブラウザでも同様の現象
Focus()が原因でスクロールが起こっているので、ポストバックのせいで一番上に戻る現象とは違うと思います。
MaintainScrollPositionOnPostBackはtrueになっています。
ポストバックではスクロール位置は変わりません。
今回の足し算の部分では、確かにクライアント側でJSに計算させる方法でも問題ありませんが、
別の場所でも同じ現象が起きていて、それらはポストバックが必要な処理です。
TextChangedイベントで計算を行うところまでは問題ありませんが、
最後の.Focus()の時にスクロールが移動し、コントロールが画面の一番下まで移動します。
VSのプロジェクトのプロパティを見ると、
対象のフレームワーク ... .NET Framework 4
となっておりますが、これが.NETのバージョンですか?
IISのバージョンは調べ方がわかりません。
回答2件
あなたの回答
tips
プレビュー