我的客户要求将说明性文本添加到组合框的下拉列表中。我有那部分工作正常,但数据不能正确加载回组合框。我确定这是因为当在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
,一切都会工作,我想。)