問題: 親ページにあるRadTabstrip Control内の選択したタブに基づいて、いくつかのユーザーコントロールの1つをロードしています。 Selected TabをキャプチャしてOnTabClickイベント内のSession変数に割り当てて、各User Controlでその特定のコントロールをレンダリングする必要があるかどうかを判断します。ロード後にページレンダリングを強制することができます
これは、各ユーザーコントロールがデータベースに照会して異なるグラフを表示し、サーバーへのすべてのポストで不必要な処理が発生しないようにするためです。私は、各ユーザーコントロールが、データベースから取得された内容に基づいてランタイム中に割り当てられたテキスト値のみを取得するマークアップに複数のラベルを持つことを追加したいと思います。
メインページを読み込むと、選択したタブ変数が各ユーザーコントロールによってチェックされ、すべてがそのスコープから正常に機能します。 (0の最初のタブにはグラフがありません)
問題は、ユーザーコントロールを持つタブを選択したときに、データベースからデータを取得してグラフを作成するのに適切なコードですが、TEXT値はマークアップのラベルコントロールはページに表示されませんが、TEXT値はデータが収集されると同時にコードビハインドで設定されます。
同じページのポストバックを実行すると、ラベルコントロールのTEXT値が表示されます。
これは、マークアップのレンダリングを含むページライフサイクルの第1段階がユーザーコントロールの最初の読み込みでは発生しないが、その後のページの再読み込みまたは更新で発生するからだと思います。
これを回避する方法はありますか?私はデータベースを打った後レンダーイベントへの呼び出しを考えていますが、私は自分の考えに基づいていないかもしれません。
誰かがアドバイスや潜在的な解決策を提供できますか?
おかげ
あなたのユーザーコントロールのデータがユーザーコントロールのラベルに後でマップされているかのように間違いなく聞こえます。どのようにしてユーザーコントロールを作成していますか?これは、OnTabClickメソッドの実行中に問題があってはならないと思われます。これは、ユーザーイベントがクライアントに送信される前にページを変更する最後のチャンスイベントであるPage_PreRender()の前に発生するためです。 –
UserControlは静的で、既にサイトに作成されています。階層は、Master Page、SubMaster Page、ASPXページ、そしてASPXページ内のTagNameとPrefixで登録され、そのページにdivタグで追加されたUserControlsです。サイトが読み込まれると、ASPXページが読み込まれ、マークアップもUserControlsごとに表示されます。条件付きチェックを削除して、単にすべてのコントロールをビルドできるようにすると、問題は発生しません。しかし、私は常にポストバックのすべてのUserControlのDBを照会するという別の問題があります。パフォーマンスのためのキラー。 – Mark