3

私は、かなり標準的な Web インターフェースであると想像するものを持っています。

上部の一連のタブからアクセスできる 4 つの異なる ListView (グリッド コントロール) があります。

これを次のように実装しました。

代替テキスト http://img402.imageshack.us/img402/1530/pagedu8.jpg

タブ 1 はグリッド 1 を含むページ 1 をフレーム 2 にロードし、タブ 2 はグリッド 2 を含むページ 2 をフレーム 2 にロードします。

ただし、これは、グリッド内のアイテムをクリックして、DetailsPage1.aspx をフレーム 2 にロードすると、フレーム 1 とタブがまだ表示され、アクティブであることを意味します。

HttpRequest (または asp.net の WebRequest) を使用して、1 つのフレームだけを使用し、タブのクリックに基づいてページを動的にロードする必要があるとアドバイスされました。

これは正しいアプローチですか?手元にリソースやヒントがあれば、それは大歓迎です!

ありがとう

4

9 に答える 9

4

フレームは絶対ダメです。他の手法を使用して達成できないフレームには利点がありません。

つまり、AJAX を使用する必要があるということですか? 必ずしも。AJAX は、リッチでシームレスなインターフェイスを提供する必要があると感じた場合に最適なソリューションですが、厳密に必要というわけではありません。

サーバー側のインクルードを使用して、タブを別の (共通の) サブページに分割することもできますが、ASP.NET について言及しているので (フレームワーク v2 以降で実行していると仮定して)、マスター ページを使用することをお勧めします。タブは 1 つのコンテンツ セクションまたはマスター自体にあり、グリッド/詳細は別のコンテンツ セクションにあります。

2 つの手法の主な違いは、AJAX を使用すると、タブからタブへの移行が滑らかでシームレスになることですが、a) 少し余分な作業が必要です (特に、特定の AJAX フレームワークに慣れていない場合)。基本的に 4 ページが 1 つにまとめられており、ページは「重く」、保守がより複雑です。非 AJAX ルートを選択した場合の主な違いは、各タブをクリックすると、小さいながらも明確な更新効果があることです (毎回新しいページが読み込まれるため)。

もちろん、マスター ページは一貫したサイト スタイルと構造を維持するのに役立ちます。そのため、マスター ページ システムで AJAX を使用できない理由はありません。

于 2008-10-31T13:36:02.310 に答える
3

フレームが不自由です: ユーザーがブックマークを設定したい場合や、ユーザーが Google 経由でサイトにアクセスした場合、問題が発生します: ナビゲーション フレームが表示されません。そのため、多くの汚い JavaScript が必要です。これを確認します。JavaScript が必要な場合は、最初から実行し、AJAX を使用してください

于 2008-10-31T11:55:37.957 に答える
2

アヤックスがベストチョイスです。ただし、戻る/進むで閲覧できるようにすることを忘れないでください。最良の選択は、ページ ハッシュを変更することです。私はこのようなものを使用しました:

最初のタブの domain.com/#tab1 domain.com/#tab2 の 2 番目のタブ

等々。

jQueryを使用している場合、これは良い出発点になる可能性があります(私はそれを使用していますが、問題はありませんでした)。ただし、一般的なすべてのフレームワークに対する解決策があると確信しています:)

于 2008-10-31T11:59:22.380 に答える
2

フレームを使用する代わりに、ナビゲーション ページを他のすべてのページに含める必要があります。ブラウザーは、すべてのページに同じドキュメントが含まれていることを認識し、それをキャッシュします。

于 2008-10-31T12:00:45.607 に答える
1

TabContainerを試したり、4 つの詳細ペインをすべて読み込んで、タブ選択の変更時にパネルを表示/非表示にしたりしましたか?

ユーザーに表示される画面によっては、詳細ビューを動的にロードする場合 (Ajax またはポストバック)、ユーザーが入力した情報を永続化するのに問題が発生する可能性があり、待機が発生します (ユーザーは待機することを好みません)。

于 2008-10-31T11:58:44.753 に答える
1

ASP.NET を使用しているので、4 つのコントロールすべてをマルチビューにロードし、ポストバックで表示されているコントロールを、クリックされたボタンに設定します。

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.multiview.aspx

于 2008-11-20T09:08:30.027 に答える
1

jQuery と jQuery UI プラグインの使用をお勧めします。フレームは必要ありません。div コンテナーだけです。

于 2008-10-31T12:01:36.790 に答える
1

StingyJack のように、TabContainerコントロールを確認することをお勧めしますが、その場合、ViewState が大きくなりすぎないように注意することをお勧めします。

たとえば、そのタブが表示されるまで GridView に何も読み込まず、表示されていない場合は内容を削除します (もちろん、必要に応じてデータベースに保存します。TabContainer の ActiveTabChanged イベントを使用することが、この戦略の鍵となります。グリッドの ViewState を無効にしますが、コンテナーの場合はオンのままにします。

于 2008-10-31T12:07:24.687 に答える
-1

絶対に必要な場合を除き、フレーム (またはその件については iframe) を使用しないでください...

(i)frames を使用する唯一の正当な理由は、実際にはファイルのアップロード コントロールであり、そこでも有効かどうかはわかりません...

于 2008-11-20T09:00:20.103 に答える