2012-03-07 9 views
0

問題: 親ページにあるRadTabstrip Control内の選択したタブに基づいて、いくつかのユーザーコントロールの1つをロードしています。 Selected TabをキャプチャしてOnTabClickイベント内のSession変数に割り当てて、各User Controlでその特定のコントロールをレンダリングする必要があるかどうかを判断します。ロード後にページレンダリングを強制することができます

これは、各ユーザーコントロールがデータベースに照会して異なるグラフを表示し、サーバーへのすべてのポストで不必要な処理が発生しないようにするためです。私は、各ユーザーコントロールが、データベースから取得された内容に基づいてランタイム中に割り当てられたテキスト値のみを取得するマークアップに複数のラベルを持つことを追加したいと思います。

メインページを読み込むと、選択したタブ変数が各ユーザーコントロールによってチェックされ、すべてがそのスコープから正常に機能します。 (0の最初のタブにはグラフがありません)

問題は、ユーザーコントロールを持つタブを選択したときに、データベースからデータを取得してグラフを作成するのに適切なコードですが、TEXT値はマークアップのラベルコントロールはページに表示されませんが、TEXT値はデータが収集されると同時にコードビハインドで設定されます。

同じページのポストバックを実行すると、ラベルコントロールのTEXT値が表示されます。

これは、マークアップのレンダリングを含むページライフサイクルの第1段階がユーザーコントロールの最初の読み込みでは発生しないが、その後のページの再読み込みまたは更新で発生するからだと思います。

これを回避する方法はありますか?私はデータベースを打った後レンダーイベントへの呼び出しを考えていますが、私は自分の考えに基づいていないかもしれません。

誰かがアドバイスや潜在的な解決策を提供できますか?

おかげ

+1

あなたのユーザーコントロールのデータがユーザーコントロールのラベルに後でマップされているかのように間違いなく聞こえます。どのようにしてユーザーコントロールを作成していますか?これは、OnTabClickメソッドの実行中に問題があってはならないと思われます。これは、ユーザーイベントがクライアントに送信される前にページを変更する最後のチャンスイベントであるPage_PreRender()の前に発生するためです。 –

+0

UserControlは静的で、既にサイトに作成されています。階層は、Master Page、SubMaster Page、ASPXページ、そしてASPXページ内のTagNameとPrefixで登録され、そのページにdivタグで追加されたUserControlsです。サイトが読み込まれると、ASPXページが読み込まれ、マークアップもUserControlsごとに表示されます。条件付きチェックを削除して、単にすべてのコントロールをビルドできるようにすると、問題は発生しません。しかし、私は常にポストバックのすべてのUserControlのDBを照会するという別の問題があります。パフォーマンスのためのキラー。 – Mark

答えて

1

私は私のページを手動でリフレッシュした後、私は別の角度から問題に接近するまで表示されたラベルのテキストを防止遅延バインディング問題を解決することができませんでした。対応するタブがユーザーによって選択された場合、各ユーザーコントロールのデータのみが入力されるようにロジックを保持しましたが、マークアップに埋め込まれたインラインコードをコードビハインドファイルに移動しました。

マークアップとコードビハインドの処理順序が100%ではないことがわかったので、aspxページで宣言的に行われたものが最初に処理され、オブジェクトが作成されるコードの背後でアクセスまたは更新される前に この情報で私は2つを完全に分けて、何の問題もなくラベルにレンダリングするテキストを得ることができました。

最初のPage_Loadの後に手動ポストバックをシミュレートまたは模倣するようにページをレンダリングするようにページを強制する適切な方法を知りたがっていましたが、ページサイクルの流れはずっと簡単で、おそらくもっと良いやり方をするでしょう。

0

あなたの問題にアプローチする1つの方法は、「アップデートパネル」の使用を検討することです。ページ全体をレンダリングできるようになり、イベントでは更新パネルの領域を更新するだけです。

一般的にパフォーマンス上の理由からこの機能が大好きですが、キャッチがあります。一部のブラウザ(SafariやOperaのバージョンなど)によっては、これらが正しく表示されません。あなたのアプリケーションは、一般消費者向けのWebアプリケーションですか?もしそうなら、Opera /他のブラウザでこの欠点が修正されていない限り、同じページで全面更新を検討してユーザーデータを渡す必要があります(4ヶ月でテストしていません)。

関連する問題