- PR -

ASP.NETユーザーコントロールの初期化処理

1
投稿者投稿内容
sou
ベテラン
会議室デビュー日: 2002/09/25
投稿数: 56
投稿日時: 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の初期値を設定するのがよろしいんでしょうか?
KIMERA
大ベテラン
会議室デビュー日: 2003/02/28
投稿数: 112
お住まい・勤務地: 兵庫県・大阪府
投稿日時: 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 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-01-25 06:25
 たぶん、翻訳の間違いなんだろうな。
 マイクロソフトが付けたコメントに惑わされてはいけません。「初期化処理」は、コンストラクタで行います。
_________________
1

スキルアップ/キャリアアップ(JOB@IT)