将 List<KeyValuePair> 绑定到组合框
Bind List<KeyValuePair> to combobox
我无法创建 class 或我自己的对象,所以我想我会使用 List<KeyValuePair>
来存储两个属性,然后将此对象绑定到组合框。
但是,我看不出如何在组合框中设置 valueField
和 TextField
。
代码。
List<KeyValuePair<int, string>> kvpObject =
new List<KeyValuePair<int, string>>();
foreach (User u in m_users) {
kvpObject.Add(new KeyValuePair<int, string>(u.ID, u.Name));
}
// Bind Add Users combobox
cmboBox.DataSource = kvpObject;
cmboBox.ValueField = "????" // Maybe something like kvpObject[0]..
cmboBox.TextField = "????";
cmboBox.DataBind();
有谁知道我需要在 ????
.
里面放什么
我觉得应该是这样的:
cmboBox.ValueField = "Key";
cmboBox.TextField = "Value";
因为您使用的是KeyValuePair。属性是 Key
和 Value
更新:
我也有一个建议。而不是使用 for 循环。然后您可以使用 Linq 将其绑定到组合框的数据源。像这样:
cmboBox.DataSource = m_users
.Select (s =>new KeyValuePair<int,string>(s.ID,s.Name))
.ToList();
cmboBox.ValueField = "Key";
cmboBox.TextField = "Value";
cmboBox.DataBind();
记得加上System.Linq;
我无法创建 class 或我自己的对象,所以我想我会使用 List<KeyValuePair>
来存储两个属性,然后将此对象绑定到组合框。
但是,我看不出如何在组合框中设置 valueField
和 TextField
。
代码。
List<KeyValuePair<int, string>> kvpObject =
new List<KeyValuePair<int, string>>();
foreach (User u in m_users) {
kvpObject.Add(new KeyValuePair<int, string>(u.ID, u.Name));
}
// Bind Add Users combobox
cmboBox.DataSource = kvpObject;
cmboBox.ValueField = "????" // Maybe something like kvpObject[0]..
cmboBox.TextField = "????";
cmboBox.DataBind();
有谁知道我需要在 ????
.
我觉得应该是这样的:
cmboBox.ValueField = "Key";
cmboBox.TextField = "Value";
因为您使用的是KeyValuePair。属性是 Key
和 Value
更新:
我也有一个建议。而不是使用 for 循环。然后您可以使用 Linq 将其绑定到组合框的数据源。像这样:
cmboBox.DataSource = m_users
.Select (s =>new KeyValuePair<int,string>(s.ID,s.Name))
.ToList();
cmboBox.ValueField = "Key";
cmboBox.TextField = "Value";
cmboBox.DataBind();
记得加上System.Linq;