我无法创建类或我自己的对象,因此我想我将使用List<KeyValuePair>存储两个属性,然后将该对象绑定到组合框。

但是,我看不到如何在组合框中设置valueFieldTextField

代码。

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。属性是KeyValue

更新:

我也有个建议。而不是使用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;

08-26 09:28