2010-11-22 9 views
0

ユーザーがクリックするタブに基づいて、多くのユーザーコントロールの1つを動的に読み込みます。選択したタブインデックスをビューの状態で保存します。ユーザーコントロールにOnChangedイベントを発生させるチェックボックスがあります。私の問題は、Page_Loadでユーザーコントロールをロードすると、コントロールが時間内に作成されなかったため、チェックボックスイベントが発生しないということです。 Page_Initでユーザーコントロールを読み込むと、ViewStateがまだ読み込まれていないため、読み込むユーザーコントロールがページに表示されません。ロードするユーザーコントロールを保存し、ユーザーコントロールのイベントを発生させるにはどうすればよいですか?ユーザーコントロールのイベントを発生させる方法で読み込むユーザーコントロールを制御する方法

+1

私は、それを含むページ/コントロールのPage_Loadで動的にロードすると、チェックボックスイベントを発生させることができることを追加します。発砲していない場合、他の何かが間違っている可能性があります。私が見てきたこの問題の最も一般的な問題は、チェックボックスのIDを初期化するたびに同じIDに設定することではありません。 –

答えて

1

ベストプラクティスは、Page_Initイベントですべてのコントロールを作成し、レンダリングされたページに存在しないと思われる場合はVisibleプロパティをfalse(自分の場合はPage_Load)に設定することでした。

編集

別のオプションは、(ViewStateのほかに)いくつかの他の基準に基づいてロードするために制御するかを決定することです。たとえば、現在のタブをクエリ文字列パラメータの1つにすると、そのデータはPage_Init中にリクエストで使用できるようになります。

+0

私はそれが私の選択肢だとは思いません。ユーザーコントロールは非常に大きく、パフォーマンスのために一度に1つだけが読み込まれるようにしました。他の戦略について知っていますか? – adam0101

+0

@ adam0101:私の編集を参照してください。 – StriplingWarrior

+0

@StriplingWarrior、あなたの編集への応答として、私はポストバックのコントロールをロードしているので、クエリ文字列にタブインデックスを取得するには、私はページを自分自身にリダイレクトする必要があります。パフォーマンスは問題であるため、別のページライフサイクルを用意する余裕はないと思います。代わりに隠れたフォームフィールドを使うことを考えていました。あなたはこれに何か問題があるか、他の選択肢がありますか? – adam0101

関連する問題