フリーエンジニアである下っ端SEの備忘録と日記。日々是精進。 開発言語は主にC#。 開発技術が日々進化し続けている今日、取り残されまいとするも歳のせいか覚えが悪いSE。 ほったらかしですいません。

スポンサーサイト

上記の広告は2週間以上更新のないブログに表示されています。 新しい記事を書くことで広告が消せます。  

Posted by スポンサー広告 at

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
人気ブログランキングへ
人気ブログランキングへ  
タグ :.NETC#ASP.NET


Posted by ようすけ at 10:32Comments(15)C#