View内のDropDownListの連動

ListViewの中に置いたDropDownListでデータの更新等をする場合。
(FormViewとかでも同じだと思う)

  1. 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の中身が、

value text
1 a
2 b
3 c

こうなっている時に、<%# Bind("value") %'>がnullだったりすると、「DropDownList1にはそんな値ねーよばーかばーか」と詰られる。
回避方法はいくつかあるみたい。


aspx側だけで対応する場合、

 <asp:ListItem Value=""></asp:ListItem>

こんなリストアイテムを、AppendDataBoundItemsをTrueにした上で、DropDownListに追加すれば、nullには対応出来る。
ただし、null以外でかつ、DropDownListの中身にない別の値が来た場合は、またエラーが起きるので、そこら辺はデータソースの運用と調整で。

参考サイト

タグ:

Control
最終更新:2012年05月29日 13:58
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。