更改组合框的 ListItem 文本而不更改其值
Changing a combo box's ListItem Text without changing its Value
我的客户要求我将描述性文本添加到组合框的下拉列表中。我让那部分工作正常,但数据没有正确加载回组合框。我确定这是因为当在 ListItem.Text
属性 上设置描述性文本时,这会传播到 ListItem.Value
。但我不想 Value
改变。
我的代码:
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
都不匹配。
在不更改选择值的情况下,在组合框中设置描述性文本的更好方法是什么?
(我的长期意图,除了当前版本的积压之外,是将所有这些移动到数据库中。然后我可以设置 Text = db.Text
,然后设置 Value = db.Value
,一切都会按我想要的方式工作.)
行items.Add(new ListItem(value))
设置新ListItem
的Text
。由于 Value
为空,查询 Value
returns Text
.
我通过在构造函数中显式设置 Value
解决了这个问题:items.Add(new ListItem(value, value))
。然后正确更改 Text
并没有影响 Value
.
我的客户要求我将描述性文本添加到组合框的下拉列表中。我让那部分工作正常,但数据没有正确加载回组合框。我确定这是因为当在 ListItem.Text
属性 上设置描述性文本时,这会传播到 ListItem.Value
。但我不想 Value
改变。
我的代码:
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
都不匹配。
在不更改选择值的情况下,在组合框中设置描述性文本的更好方法是什么?
(我的长期意图,除了当前版本的积压之外,是将所有这些移动到数据库中。然后我可以设置 Text = db.Text
,然后设置 Value = db.Value
,一切都会按我想要的方式工作.)
行items.Add(new ListItem(value))
设置新ListItem
的Text
。由于 Value
为空,查询 Value
returns Text
.
我通过在构造函数中显式设置 Value
解决了这个问题:items.Add(new ListItem(value, value))
。然后正确更改 Text
并没有影响 Value
.