组合框SelectedValue返回对象而非值
本文关键字:对象 返回 SelectedValue 组合 | 更新日期: 2023-09-27 18:30:05
目标:当我的表单加载时,我正在执行一个数据库调用,该调用将返回一个DataTable,我想将其分配为KeyValuePair(字符串,字符串)作为组合框的数据源。Display Member是键(RailCarID),Value Member是值(RailcarTransaction_Guid)(我将其存储为字符串)。
我遇到的问题是,当我做combobox时。选定的值。。。它返回给我的是一个对象,而不是一个字符串。有人能指出我在这里做错了什么吗?
我最初使用的是字典(它会出错),通过搜索来解决我的问题,最终使用了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;
}
由于ComboBox.ValueMember
可以设置为任何数据类型的属性(例如,它可以是int
或DateTime
,而不一定是string
),因此SelectedValue
属性是一个对象。
你必须知道你实际处理的是什么类型的,并将其转换回:
var selectedRailCar = Convert.ToString(cboxRailCars.SelectedValue);