并[c#]
在数据库中读取数据后,我想在组合框中插入并为任何插入分配一个值。
示例:
data_read
我 没有 在组合框中插入姓氏的问题。
但我有一个问题是在id 1中分配surname1 ...在id 12等的surname2 ...
我需要分配从查询中读取的值
并且不会使用if
或case
声明进行分配。
可以为任何组合框分配标签(即'姓')和值(即'id')?!
和
有可能在组合框中看不到'id'吗?
简而言之,我可以做类似HTML选项值的事情,每个标签的位置(通过fogazzaro,通过roma等......我们有一个相关的值)。
<select name="sedi">
<option value="1">Via fogazzaro</option>
<option value="22">Via roma</option>
<option value="38">Via Olevano</option>
<option value="42">Via Mazzini</option>
</select>
抱歉英语不好。
我希望你了解我。
所有人都有良好的代码! :)
答案 0 :(得分:0)
实现此目的的一种方法是创建一个包含两个字段的类, ID 和 Surname 。然后使用SelectedIndex
属性将用户的选择解析为集合中的索引:
class Person
{
ID { get; set }
Surname { get; set; }
}
将Person
个对象的集合放入List
(可能是真实世界的示例,它将从数据库中读取并在循环中填充列表):
List<Person> people = new List<Person>() {
new Person()
{
ID = 1,
Surname = "Smith"
},
...
};
当用户从列表中选择一个项目时,使用所选索引解析Person
对象实例:
private void ComboBox_SelectedIndexChanged(object sender, System.EventArgs e)
{
// Do something useful with your object:
MessageBox.Show(
"You selected:\n" +
people[comboBox.SelectedIndex].ID + "\n" +
people[comboBox.SelectedIndex].Surname);
}
答案 1 :(得分:0)
创建一个用于存储数据的类,并覆盖ToString()方法以返回您希望在组合框中看到的文本。
class Item
{
public int ID { get; set; }
public string Name { get; set; }
public override string ToString()
{
return Name;
}
}
然后将此类的对象添加到组合框中。
comboBox.Items.Add(new Item() {ID = 1, Name = "Fred"});
comboBox.Items.Add(new Item() {ID = 2, Name = "Jane"});
然后,访问所选项目(在处理程序或任何地方):
Item selected = comboxBox.SelectedItem as Item;
if (selected != null)
{
// do something with 'selected'
}
答案 2 :(得分:0)
如果您的ID是唯一的,您可以使用字典,其中键是ID,值是姓氏。在你的组合框中添加
SelectedValuePath="Key" DisplayMemberPath="Value"
并使ItemsSource成为字典。这样组合框的SelectedItem将是ID,但&#34;标签&#34;将是姓氏