ListViewの中に置いたDropDownListでデータの更新等をする場合。
(FormViewとかでも同じだと思う)
- DropDownListのSelectedValueプロパティにバインドする
SelectedValue='<%# Bind("項目名") %'>
こんな感じ。ちなみにSelectedValueプロパティはインテリセンスに表示されないので、手で書く。
DropDownListに関連付けられたデータ(ListItemでも、バインドしたデータでも)と、SelectedValueの値が一致しない場合、エラーが起きるので注意。
(項目一覧に存在しないため〜というエラー)
上記のエラーが起こるのは、例えばこんな場合
<asp: DropDownList ID="DropDownList1" runat="server" DataSourceID="DataSouce" DataTextField="text" DataValueFiled="value" SelectedValue='<%# Bind("value") %>'>
View内のDropDownList自身がDataSouceからバインドしている状態。
このDropDownListの中身が、
こうなっている時に、<%# Bind("value") %'>がnullだったりすると、「DropDownList1にはそんな値ねーよばーかばーか」と詰られる。
回避方法はいくつかあるみたい。
- DropDownListのSelectedValueにDBNull.ValueをBindすると...。
aspx側だけで対応する場合、
<asp:ListItem Value=""></asp:ListItem>
こんなリストアイテムを、AppendDataBoundItemsをTrueにした上で、DropDownListに追加すれば、nullには対応出来る。
ただし、null以外でかつ、DropDownListの中身にない別の値が来た場合は、またエラーが起きるので、そこら辺はデータソースの運用と調整で。
参考サイト
- DetailsView 中の連動 DropDownList
- DropDownListの初期値を変えたい
最終更新:2012年05月29日 13:58