【C#】ドロップダウンリストにListItemをAddする

ようすけ

2009年12月03日 10:32

2つの(複数の)ドロップダウンリストに同じListItemをAddしたとする。
こんな感じ。

ListItem li = new ListItem();
li.Text = ""; li.Value = "-1";

ListItem li2 = new ListItem();
li2.Text = "あ"; li2.Value = "100"

dropdownlist1.Items.Add(li);
dropdownlist1.Items.Add(li2);

dropdownlist2.Items.Add(li)
dropdownlist2.Items.Add(li2);

こうすると2つのドロップダウンリストが同じオブジェクトのListItemを見ている(参照している)ことになる。
そこで、dropdownlist1の方【だけ】SelectedIndexを変えようとする。

dropdownlist1.SelectedIndex = 1;

SelectedIndexを指定すると、ListItemのSelectedプロパティがtrueに変わるのだけれども
(この場合、liのSelectedプロパティがtrueになる。)
Selectedプロパティを変えたそのListItemはdropdownlist2でも参照しているので、
結果、dropdownlist2のSelectedIndexも変わってしまう。
2つのドロップダウンリストはいつも同じ選択値・・・


これが原因のバグに出会ったことがあるけど、気持ち的にはわかる。
ListItemを値型のつもりでコーディングしたのでしょう。

本来なら、
dropdownlist1.Items.Insert(0, new ListItem("", "-1"));
dropdownlist2.Items.Insert(0, new ListItem("", "-1"));
のようにそれぞれにListItemをnewしないといけない。

けっこうコロっと忘れてしまうのよね・・・(汗

この記事がお役に立ったようでしたらぜひクリックお願いしますm(_ _)m
人気ブログランキングへ

関連記事