例えば、下部にスクロールした状態で、ドロップダウンの選択項目を変更した場合(このドロップダウンはAutoPostBack=Trueだとします)など、画面トップに戻ってしまうのは都合が悪い場合があります。
結構簡単に設定できるのですが、知らない人結構多いみたいなので紹介しておきます。
方法としては、2つあります。
SmartNavigationプロパティをTrueに設定するという方法とスクリプトを利用するという方法です。
スクリプトで行うやり口はいろいろあるでしょうし、そんなに得意分野ではないので、スマートナビゲーションに
ついて少々お話ししましょう。
SmartNavigationプロパティの設定方法は、以下の3つがあります。
・@PageディレクティブにSmartNavigation属性を追加する。
(例:<%@ Page SmartNavigation="true" language="VB" %>)
・デザイナでを利用する。
・コード内で指定する。(但し、この方法を利用するケースは少ないでしょう。)
スマートナビゲーションは、ナビゲーション間のスクロール位置と要素のフォーカスを維持したままでページを更
新できるという、IE5.5以降のブラウザでサポートされるASP.NETの機能です。
ポストバックを多く利用するページでは特に役に立ちます。
しかし、注意しなければならない点もあります。いつくか挙げておきます。
●ページのAspCompat属性がtrueに設定されていると、場合によってはパフォーマンスに重大な影響を及ぼします。
回避策としては、Pageクラスのいずれかのイベント/メソッドの内部だけでCOMコンポーネン
トを作成します。また、ページ作成時にオブジェクトが作成されないように注意してください。
悪い例と良い例を具体的にコードで示しておきます。
悪い例
Dim comObj As ComObject = New ComObject()
Public Sub Page_Load()
'特になし
End Sub
良い例
Dim comObj As ComObject
Public Sub Page_Load()
comObj = New ComObject()
End Sub
●ユーザーコントロールを動的にロード配置している画面ではスクロールが保持されない。
●(これは未確認ですが)PostBackを2つ同時に発生させた場合にはIEが落ちてしまう。(らしい)
まぁ、大抵の場合、SmartNavigation="true"で問題ないでしょう。
最近は、サードパーティ製品も.NET対応が増えてますから、COMコンポーネントを使うってことは少ないと思い
ますしね。
※注
当ブログのTipsは、@IT等の情報サイトの内容を参考にして構成された記事
もあります。Tipsの内容に著作権等権利を侵害する内容があった場合には、
告知して下さい。早急に訂正または削除にて対応したいと思います。
SmartNavigationプロパティをTrueに設定するという方法とスクリプトを利用するという方法です。
スクリプトで行うやり口はいろいろあるでしょうし、そんなに得意分野ではないので、スマートナビゲーションに
ついて少々お話ししましょう。
SmartNavigationプロパティの設定方法は、以下の3つがあります。
・@PageディレクティブにSmartNavigation属性を追加する。
(例:<%@ Page SmartNavigation="true" language="VB" %>)
・デザイナでを利用する。
・コード内で指定する。(但し、この方法を利用するケースは少ないでしょう。)
スマートナビゲーションは、ナビゲーション間のスクロール位置と要素のフォーカスを維持したままでページを更
新できるという、IE5.5以降のブラウザでサポートされるASP.NETの機能です。
ポストバックを多く利用するページでは特に役に立ちます。
しかし、注意しなければならない点もあります。いつくか挙げておきます。
●ページのAspCompat属性がtrueに設定されていると、場合によってはパフォーマンスに重大な影響を及ぼします。
回避策としては、Pageクラスのいずれかのイベント/メソッドの内部だけでCOMコンポーネン
トを作成します。また、ページ作成時にオブジェクトが作成されないように注意してください。
悪い例と良い例を具体的にコードで示しておきます。
悪い例
Dim comObj As ComObject = New ComObject()
Public Sub Page_Load()
'特になし
End Sub
良い例
Dim comObj As ComObject
Public Sub Page_Load()
comObj = New ComObject()
End Sub
●ユーザーコントロールを動的にロード配置している画面ではスクロールが保持されない。
●(これは未確認ですが)PostBackを2つ同時に発生させた場合にはIEが落ちてしまう。(らしい)
まぁ、大抵の場合、SmartNavigation="true"で問題ないでしょう。
最近は、サードパーティ製品も.NET対応が増えてますから、COMコンポーネントを使うってことは少ないと思い
ますしね。
※注
当ブログのTipsは、@IT等の情報サイトの内容を参考にして構成された記事
もあります。Tipsの内容に著作権等権利を侵害する内容があった場合には、
告知して下さい。早急に訂正または削除にて対応したいと思います。