- PR -

repeaterの中にDropDwonList

1
投稿者投稿内容
ペロ
会議室デビュー日: 2005/09/26
投稿数: 4
投稿日時: 2005-09-28 15:31
はじめまして、新米SEですがよろしくお願いします。
VBで開発しています。

RepeaterのItemTemplateの中にDropDownListをいれて
使いたいのですがうまくいきません。

皆さんの書かれている過去の記事などを参考にしてItemDataBoundで

CType(Repeater1.FindControl("コントロールの名前"), DropDownList).DataSource=

上記のようにして見たのですがうまくいきません。

なにとぞよろしくお願いします。
hira
常連さん
会議室デビュー日: 2004/05/07
投稿数: 33
投稿日時: 2005-09-28 18:33
repeter1の直下をFindControlしているのが
問題だと思います。

repeterに対してバインドしてると言う事は、
DropDownListが複数作成されるはずなんで、
各行毎に設定する必要があるんじゃないでしょうか?

コードはこんな感じ?

For intRowCtr = 0 To Repeater1.Items.Count - 1

CType(Repeater1.Items(intRowCtr).FindControl("コントロールの名前"), DropDownList).DataSource= DS

next

尚、このコード未検証なので、ご注意を

#識者の方で、もっといい方法をご存知だったら、教えてください。

あと、質問する時は、環境を記述する癖をつけたがいいですよ。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-09-28 20:29
引用:

ペロさんの書き込み(2005-09-28 15:31)より:

RepeaterのItemTemplateの中にDropDownListをいれて
使いたいのですがうまくいきません。

皆さんの書かれている過去の記事などを参考にしてItemDataBoundで

CType(Repeater1.FindControl("コントロールの名前"), DropDownList).DataSource=

上記のようにして見たのですがうまくいきません。


 ネットの向こうの人は、あなたの隣にいるわけではありませんし、透視能力を持っているわけでもありません。ですから、「うまくいきません」では、何がどうなっているからうまくいかないのか、わかりません。

 新米 SE ということは、一人で仕事をしているわけではないと思います。出来れば、同じ仕事をしていない同期に「うまくいかないんだけど、どう思う?」と相談してみてから、ウェブを使いましょう。あなたの仕事を知らない同期にしたのと同じか、それ以上の説明が、ウェブでは必要です。


 まず、うまくいかない、つまり期待通りにならずにどうなるのか、書いてください。
 例外(エラー)が発生するなら、どのような種類の例外が発生し、どのようなメッセージが書かれているかも、書いてください。
 デバッグを試みたなら、どの変数を検査してみたのか、その変数は期待通りの値だったのか、書いてください。
 何かを参照したのなら、参照したものを「いろいろ調べた」ではなく、具体的に、たとえば URL や書籍名とページ番号、等を書いてください。
 環境は大事な要素です。VB と省略せず、VB.NET と記述し、.NET Framework のバージョンも記述してください。
_____________________________________________________________________________
□ Posted by Jitta on 2005/09/28
じったのノート
□ Microsoft MVP :Visual Developer ASP/ASP.NET Oct.2004-Sept.2005

_________________
ペロ
会議室デビュー日: 2005/09/26
投稿数: 4
投稿日時: 2005-09-29 09:05
申し訳ないです。言葉足らずでした・・・
もう一度説明させてもらいます。
.NET Framework 1.1で
ASP.NETでVB.NETを使って勤怠関係のシステムを開発していて
そこの入力画面を作成中です。
そこでリピーターを使って
------------------header-------------------------------
氏名  種別  理由  出勤時間  摘要欄
------------------item -------------------------------
氏名1 dropdwonlist1
-------------------------------------------------------
氏名2 dropdwonlist
-------------------------------------------------------
のような感じで、作っています。
ここで dropdwonlist1.datasource = dtTable
という風に入れてデータテーブルの内容をそれぞれのリストに
入れたかったのですが

「オブジェクト参照がオブジェクトインスタンスに設定されていません。」

というサーバーエラーが発生します。

会社はソフトウェア会社ではなく社内には私を含め3人しかプログラマはおらず
ASP.netのことを知っている人はいません。
独学でやってきたのですが、どうしてもわからずここに書込みさせてもらいました。
これからも皆さんの力を借りたいのでよろしくお願いします。
ペロ
会議室デビュー日: 2005/09/26
投稿数: 4
投稿日時: 2005-09-29 09:28
hiraさんありがとうございます。

下記のとおりにしたらできました。
For intRowCtr = 0 To Repeater1.Items.Count - 1
CType(Repeater1.Items(intRowCtr).FindControl("コントロール名"), dropDownList).DataSource = dtTable
CType(Repeater1.Items(intRowCtr).FindControl("コントロール名"), DropDownList).DataValueField = "区分"
CType(Repeater1.Items(intRowCtr).FindControl("コントロール名"), DropDownList).DataTextField = "名"
CType(Repeater1.Items(intRowCtr).FindControl("コントロール名"), DropDownList).DataBind()
Next


そうですよね、リピーターでまわしてるから、それぞれIDが変わってくる
んですね・・・・質問の仕方、内容ともに恥ずかしいです。
でも聞かないと永遠にわかりませんでしたが・・・・・

Jittaさんこの方法以外にもなにかよい方法があればよろしくお願いします。

Jittaさんhiraさんこれからもどうかよろしくお願いします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-09-30 21:18
引用:

ペロさんの書き込み(2005-09-29 09:05)より:

会社はソフトウェア会社ではなく社内には私を含め3人しかプログラマはおらず
ASP.netのことを知っている人はいません。
独学でやってきたのですが、どうしてもわからずここに書込みさせてもらいました。
これからも皆さんの力を借りたいのでよろしくお願いします。


私も、そんなに変わりませんよ。いつの間にか回答することが多くなっているだけです。

 「あなたの仕事を知らない同僚に相談」は、要は、あなたが暗黙知としているものを気づくためのものです。あなたは知っているから言わないけれど、他の人には言わなければ伝わらないこと、を気づくためのものです。プログラムを知らない人なら知らない人であるほど、実はいいです。
# もっとも、「俺、プログラムわからん」って逃げられたら、元も子もないですけど


 ItemDataBound イベントでやっているんですよね?だったら、for 文で回す必要はありません。イベント引数にバインドしようとしている行のアイテムが入っていますから、それを利用しましょう。
 CType() で囲むと、毎回キャストを行うので、別の変数にキャストしたものを参照させます。
コード:
Dim obj As Object = e.Item.FindControl("コントロール名");
If Not obj Is Nothing Then
	Dim target As DropDownList = CType(obj, DropDownList)
	target.DataSource = dtTable
	...
End If


___________________________________________________________________
□ written by Jitta on 2005/09/29
じったのノート
□ Microsoft MVP :Visual Developer ASP/ASP.NET Oct.2004-Sept.2005
_________________
ペロ
会議室デビュー日: 2005/09/26
投稿数: 4
投稿日時: 2005-10-07 13:29
Jittaさん>
返事が遅くなってごめんなさい。
うまくいきました。hiraさんもありがとうございました。

--引用----------------------------------------------------------------------
「あなたの仕事を知らない同僚に相談」は、要は、あなたが暗黙知としているものを気づくためのものです。あなたは知っているから言わないけれど、他の人には言わなければ伝わらないこと、を気づくためのものです。プログラムを知らない人なら知らない人であるほど、実はいいです。
-----------------------------------------------------------------------------

確かにそうですね、知らない人に愚痴ってたらわかることがあります。これからはまず愚痴ってみます(笑

それでは、またこれからもよろしくお願いします。
1

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