- PR -

CreateUserWizard コントロールに追加したリストボックスへのアクセス

投稿者投稿内容
未記入
常連さん
会議室デビュー日: 2007/09/20
投稿数: 22
投稿日時: 2007-09-21 13:57
一応スレッドを変えました。

CreateUserWizard コントロールに追加したリストボックスへリストを追加したいのですがやり方を教えてください。

こんなソースでは駄目でした。(Rolesは追加したlistboxです。)

Dim rolesListBox As ListBox = New ListBox()
rolesListBox.Items.Add("guest")
rolesListBox.Items.Add("member")

CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Roles").Controls.Add(rolesListBox)
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2007-09-21 14:38
FindControl("Roles")でコントロールを取得したとき、型がobjectになってしまうので
ここでListBox型にキャストします。
そこにたいしてItem追加を行えばいけると思います。
未記入
常連さん
会議室デビュー日: 2007/09/20
投稿数: 22
投稿日時: 2007-09-21 14:59
引用:

どっとねっとふぁんさんの書き込み (2007-09-21 14:38) より:
FindControl("Roles")でコントロールを取得したとき、型がobjectになってしまうので
ここでListBox型にキャストします。
そこにたいしてItem追加を行えばいけると思います。



(ListBox)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Roles").item.Add("guest")

このコードは間違ってますがこんな感じのことをおっしゃっているんですよね?
構文エラーなんですが、どうすれば良いでしょうか?
中途半端な知識しかなくて申し訳ありません
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2007-09-21 15:26
カッコを頭につけてキャストするのはC#。VBは、、CTypeでしたっけ。
未記入
常連さん
会議室デビュー日: 2007/09/20
投稿数: 22
投稿日時: 2007-09-21 15:54
引用:

べるさんの書き込み (2007-09-21 15:26) より:
カッコを頭につけてキャストするのはC#。VBは、、CTypeでしたっけ。


最初
CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Roles"), ListBox).item.Add("guest")
とやったのですが、「itemはSystem.Web.UI.WebControls.ListBox のメンバではありません。」
となりました。
itemを取ると「AddはSystem.Web.UI.WebControls.ListBox のメンバではありません。」
となってしまいます。
未記入
常連さん
会議室デビュー日: 2007/09/20
投稿数: 22
投稿日時: 2007-09-21 16:09
CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("RolesList"), ListBox).Items.Add("member")

でできました。
すみません、FindControl("RolesList")の部分で名称を間違っているというオチでした。
IntelliSenseが効いていたので勘違いしてしまいました。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-09-21 16:10
引用:

未記入さんの書き込み (2007-09-21 15:54) より:

CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Roles"), ListBox).item.Add("guest")
とやったのですが、「itemはSystem.Web.UI.WebControls.ListBox のメンバではありません。」
となりました。
itemを取ると「AddはSystem.Web.UI.WebControls.ListBox のメンバではありません。」
となってしまいます。


'Item' ではなく 'Items' というメンバではないでしょうか。
CType, DirectCast ではなく TryCast を使った方が良いでしょう。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
未記入
常連さん
会議室デビュー日: 2007/09/20
投稿数: 22
投稿日時: 2007-09-21 16:33
引用:

じゃんぬねっとさんの書き込み (2007-09-21 16:10) より:
'Item' ではなく 'Items' というメンバではないでしょうか。


再現しようとして書き間違えました。
上にも書きましたがIntelliSenseを使ってコーディングしてますので、前にはitemsとしてましたが、そもそもFindControlに指定する名称を間違えてました。


引用:

CType, DirectCast ではなく TryCast を使った方が良いでしょう。



変更しました。

私の手元にはASP.NETの本は何冊かあるのですが、VBそのものの本はありません。
VBはよくわからずにサンプルを見ながらやっているのでこんなことも知りませんでした。
こんな初心者にもお勧めのVBの書籍がありましたらご紹介ください。

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