- - PR -
GridViewで動的にDropDownListの項目を追加する
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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 ] |
|
投稿日時: 2006-09-12 12:07
> Page_Load内でこのイベントを行いたいのですが、その時点で間違っているなんていうことはあるのでしょうか…
間違ってるんじゃないかな。 データのバインドが行われるのはページがレンダリングされる直前ですね。 GridViewの内容をいじるのであれば、GridViewのPreRenderの中でやるべきかな。 |
|
投稿日時: 2006-09-12 12:09
どっとねっとふぁんさん、早速のレス有難うございます!!
有難うございます、試してみます! |
|
投稿日時: 2006-09-12 16:13
自己レスです。
解決しました。 イベント実行のタイミングと、 条件文のケアレスミス(投稿にも残ってますね )が問題だったようです。 お騒がせして申し訳ありません。有難うございましたm(__)m |
1