目标:当我的表单加载时,我正在进行数据库调用,该数据库调用返回给我一个DataTable,我想将其指定为KeyValuePair(字符串,字符串)作为组合框的数据源。显示成员是键(RailCarID),值成员是值(RailcarTransaction_Guid)(我将其存储为字符串)。
我遇到的问题是,当我做combobox.SelectedValue时...它返回给我一个对象而不是一个字符串。谁能提出我在这里做错了什么?
我最初使用的是字典(并且会出错),并且通过搜索解决我的问题最终使用了BindingList。现在我的应用程序上的组合框在显示器中显示对象数组。下面是一些代码片段:
private void GetAllTransactions()
{
BindingList<KeyValuePair<string, string>> Transactions = new BindingList<KeyValuePair<string, string>>();
string sql = "SELECT * FROM RailcarTransaction WHERE IsComplete = 'True' AND IsUploaded = 'False'";
DataTable transactions = session1.GetRecords(sql);
for (int i = 0; i < transactions.Rows.Count; i++)
{
Transactions.Add(new KeyValuePair<string, string>(transactions.Rows[i]["RailCarID"].ToString(), transactions.Rows[i]["RailcarTransaction_Guid"].ToString()));
}
cboxRailCars.DisplayMember = "Key";
cboxRailCars.ValueMember = "Value";
cboxRailCars.DataSource = Transactions;
}
答案 0 :(得分:1)
由于ComboBox.ValueMember
可以设置为任何数据类型的属性(例如,它可以是int
或DateTime
,但不一定是{{ 1}}),SelectedValue
属性是一个对象。
你必须知道你实际处理的是什么类型并将其转换回来:
string