- - PR -
ASP.NETユーザーコントロールの初期化処理
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-01-24 16:45
現在、ASP.NET2.0でユーザーコントロール(.ascx)を作成しています。
このユーザーコントロールには、一つのDropDownListコントロールが含まれ、 ユーザーコントロールのPage.LoadイベントでこのDropDownListにリストアイテムを追加しています。 また、このユーザーコントロールは、DropDownListコントロールの選択項目を外部から設定するためのパブリックなプロパティを持っています。 このような仕様のユーザーコントロールをWebページに配置して、 WebページのPage.LoadイベントでユーザーコントロールのDropDownList選択プロパティに値を設定した場合、 以下の順番でページのイベント処理が行われているため、DropDownListに項目を追加する前にプロパティの設定が行われ、ユーザーコントロールの選択項目を設定することが出来ません。 WebページのPage.Loadイベント ↓ ユーザーコントロールのプロパティ設定 ↓ ユーザーコントロールのPage.Loadイベント このようなユーザーコントロールの場合は、 いつの段階でDropDownListの初期値を設定するのがよろしいんでしょうか? |
|
投稿日時: 2007-01-24 19:08
#すいません。
#読み難いので編集しました。 WEBフォームのロード時に、UCのインスタンスは作成されていると思いますので、設定したい値をUC内の変数に格納するようにしてやり、UCのロード時にその変数の値を設定してやればできるかと思います。 外部から設定するためのプロパティをアクセサにしてもいいかと思いますが、動的にプロパティを変更した場合の処理などまで考慮していませんので、簡潔に実装する方法としてのアイディアとして参考にしてみてください。 UCにプライベートな変数 _SelectIndex を追加。 UCにパブリックなプロパティ SelectIndex を追加。 UCのロード時、 DropDown にアイテムがすべて追加された後、 DropDown の SelectIndex に _SelectIndex を設定してやる。 (この時、初期化時のみとするのであれば初期化フラグのようなものを作る必要があります。) 上記の内容をUCに実装し、WEBフォームのロード時に UC.SelectIndex に値を設定してみてください。 [ メッセージ編集済み 編集者: KIMERA 編集日時 2007-01-24 19:18 ] |
|
投稿日時: 2007-01-25 06:25
たぶん、翻訳の間違いなんだろうな。
マイクロソフトが付けたコメントに惑わされてはいけません。「初期化処理」は、コンストラクタで行います。 _________________ |
1