我的客戶要求將說明性文本添加到組合框的下拉列表中。我有那部分工作正常,但數據不能正確加載回組合框。我確定這是因爲當在ListItem.Text
屬性上設置描述性文本時,這會傳播到ListItem.Value
。但我不想Value
改變。更改組合框的ListItem文本而不更改其值
我的代碼:
public static List<ListItem> MakeDescriptiveList()
{
List<ListItem> items = new List<ListItem>();
items.Add(new ListItem(string.Empty));
for (double i = 1.0; i > -1E-9; i -= 0.05) //Roundoff error discovered!
{
string value = i.ToString("0.0#");
items.Add(new ListItem(value));
}
items.Find(x => x.Value == "1.0").Text = "1.0\t Foo foo foo";
items.Find(x => x.Value == "0.9").Text = "0.9\t Bar bar bar";
items.Find(x => x.Value == "0.8").Text = "0.8\t Baz baz baz";
///intermediate items skipped
items.Find(x => x.Value == "0.0").Text = "0.0\t FAIL";
return items;
在加載數據時,代碼試圖設置ComboBox1.SelectedValue = value
,其中value
是 「1.0」 轉換爲字符串時。但是由於Text
和Value
都沒有匹配,因此失敗。
什麼是更好的方式來設置組合框中的描述性文本,而不改變選擇的值?
(我的長期意圖,超出了當前版本的積壓,是將所有這一切到數據庫中。然後,我可以只設置之後Value = db.Value
Text = db.Text
,一切都會工作,我想。)