- PR -

GridViewで動的にDropDownListの項目を追加する

1
投稿者投稿内容
ぬこ
会議室デビュー日: 2006/09/12
投稿数: 3
投稿日時: 2006-09-12 11:58
はじめまして。いつも参考にさせていただいております。
過去スレや@IT内の記事等参照させていただきましたが、
どうしても解決できずに困っています。
どなたかご教授いただければ幸いです。

現在、VisualStudio2005、VB、WinXP、IE6.0でWebアプリケーションの開発を行っております。

GridViewの中の各行で、あるセルのデータ(文字列)を判別し、
それぞれ同じのドロップダウンリストに
判別したデータごとの項目を追加したいと考えております。

---------------------------------------
| DropDownList | 〜 … 〜 | ●データ | 〜
---------------------------------------
●によってDropDownListの値を変化させる


(Page_Load内でこのイベントを行いたいのですが、その時点で間違っているなんていうことはあるのでしょうか…)

ちなみに、表示させるaspxページにはマスタが設定してあり、
head内に<script runat="server">を挿入する、という方法はできないようです。
(マスタページに記述してみたところ、やはりはねられました(^^;)
 自身のHTMLページに記述してもはねられました。)

ちなみに、このページにはGridViewが2つあり、
動的に変化させたいDropDownListも2つ存在します。

その1つめを表示させる段階でつまずいているのですが…。

**************************************************

Dim count As Integer = GridView1.Rows.Count

Dim i As Integer = 0

Dim row As GridViewRow = GridView1.Rows(i)
GridView1.Rows(0).Cells(0).FindControl("DropDownList1")

Dim ddl1 As DropDownList = CType(row.FindControl("DropDownList1"), DropDownList)
Dim Cell4 As TableCell = row.Cells(4)
Dim Kind As String = Cell4.Text
ddl1.AutoPostBack = True

While i < count - 1

If Kind = "aaa" Then
ddl1.Items.Add(New ListItem("xxx"))
ddl1.Items.Add(New ListItem("yyy"))
ddl1.Items.Add(New ListItem("zzz")
ddl1.Items.Add(New ListItem("www")
Me.Items.Add(ddl1)
ddl1.SelectedIndex = 0

Else

If Kind Is "bbb" Then
ddl1.Items.Add(New ListItem("ooo")
ddl1.Items.Add(New ListItem("ppp")
ddl1.Items.Add(New ListItem("zzz")
ddl1.Items.Add(New ListItem("www")
Me.Items.Add(ddl1)

ddl1.SelectedIndex = 0
End If
End If

i += 1
End While

**************************************************

このイベントの前にデータバインドしてあります。

ここで ddl1.SelectedIndex = 0 と明示してあるのは、
なぜかSelectedIndexが-1になってしまうからです(DropDownListなのに・・・)

・FindControlがうまく行われていない
・そのため、項目をAddできていない
のだと思われますが。。。



長くなり申し訳ございません。

アドバイスのみでも結構です。よろしくお願いいたします。

[ メッセージ編集済み 編集者: ぬこ 編集日時 2006-09-12 11:59 ]

[ メッセージ編集済み 編集者: ぬこ 編集日時 2006-09-12 12:07 ]
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-09-12 12:07
> Page_Load内でこのイベントを行いたいのですが、その時点で間違っているなんていうことはあるのでしょうか…

間違ってるんじゃないかな。
データのバインドが行われるのはページがレンダリングされる直前ですね。
GridViewの内容をいじるのであれば、GridViewのPreRenderの中でやるべきかな。
ぬこ
会議室デビュー日: 2006/09/12
投稿数: 3
投稿日時: 2006-09-12 12:09
どっとねっとふぁんさん、早速のレス有難うございます!!
有難うございます、試してみます!
ぬこ
会議室デビュー日: 2006/09/12
投稿数: 3
投稿日時: 2006-09-12 16:13
自己レスです。

解決しました。
イベント実行のタイミングと、
条件文のケアレスミス(投稿にも残ってますね )が問題だったようです。

お騒がせして申し訳ありません。有難うございましたm(__)m
1

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