2012-01-24 9 views
1

現在、グリッドを埋めるためにデータベースを再クエリして状態を復元しますが、ページの読み込みが遅すぎます。代わりに、私はセッション変数にviewstateを保存し、ユーザーがページを再訪問するときに復元したいと思います。これはどうですか? SessionPageStatePersisterを使用する必要がありますか?これはポストバック状況ではなく、クロスページポストバックでもありません。ポストバックではなく、クロスページではないポストバックシナリオで、セッションページのビューステートを保存して復元する方法を教えてください。

背景:私はVS 2010 ASP.Net Webアプリケーションテンプレートをマスターページと複数のタブ付きコンテンツページで使用しました。新しいタブに移動すると、状態は失われます。 [顧客]タブでは、AspxGridViewから顧客をフィルタリングして選択することができます。選択した顧客IDはセッション変数に保存され、関連する顧客データを連絡先、請求書、タスクなどの他のタブに表示するために使用されます。SaveClientLayoutを使用して顧客グリッドフィルタ、並べ替えおよびレイアウトを保存および復元できます。しかし、データベースに再クエリすることなくグリッドデータを復元する方法はわかりません。

私はthis tutorialを見つけ、SessionPageStatePersisterというタイトルのセクションでコードを実装しました。私はコードをコピーし、SessionPageStateAdapterと.browserファイルを作成しました。私はこのセッションviewstateデータにアクセスする方法については混乱しています。私はと助けを必要とするどのようにviewstateを保存し、ユーザーが複数の他のページを訪問した後にそれを復元する?

+0

負荷はどれくらいですか?お客様のグリッド・クエリーをスピードアップ/ページングするためのよりよいソリューションがありますか?返すレコードはいくつですか? – Paddy

+0

残念ながら、データはConnx ODBCドライバを介してアクセスされるVaxフラットファイルに存在します。私は最適化について検討しますが、VaxとConnxはあまりよく知られていない分野です。最適化は、必要に応じてインデックスを追加できるSQL Serverほどシンプルではありません。 – DeveloperDan

答えて

0

Viewstateはセッション状態を管理するためのクライアントサイドの方法です。

HTMLレンダリングされたページ内にコードを挿入します。

したがって、ユーザーが閉じるとブラウザの状態は保持されません。

  • がデータベースに保管し続ける:あなたはブラウザセッション全体の状態を保存したい場合は

    は、次の2つの方法があります。
    パフォーマンスに問題がある場合は、ASP.NETキャッシュを使用することを検討してください。

  • Cookieに情報を格納します。

+0

ブラウザを閉じた後、またはブラウザセッションを終了した後に状態を復元しようとしていません。同じセッション内で、他のページが訪問された後にviewstateを復元したい。私が見ている問題は、viewstateは通常、ポストバックにのみ使用されるということです。私はできないことをしようとしていますか? – DeveloperDan

+0

私は参照してください。たぶん[サーバー上のビューステートを保持する](http://msdn.microsoft.com/en-us/magazine/cc188774.aspx#S6)を参照してください。 –

+0

しかし、あなたのシナリオを処理する最善の方法だと思います。現在、グリッドを埋めるためにデータベースを再クエリして状態を復元していますが、ページの読み込みが遅すぎるのではなく、セッション変数にviewstateを保存し、ユーザーがページを再訪問する "はdb +キャッシュまたはクッキーを使用しています。 –

関連する問題