2009年12月03日
【C#】ドロップダウンリストにListItemをAddする
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
人気ブログランキングへ
こんな感じ。
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
人気ブログランキングへ