【发布时间】:2018-09-18 22:41:00
【问题描述】:
我正在尝试获取ComboBox 的.SelectedValue,但它一直返回null,而不是.ValueMember 中的实际值。我尝试了几种不同的方法,并想出了这个:
DataTable datatable = DataAccess.GetDataTable(DateTime.Now); // Get DataTable from DB call
if (datatable.Rows.Count > 0)
{
List<object> items = new List<object>();
foreach (DataRow row in datatable.Rows)
{
items.Add(new { Text = Convert.ToString(row["PersFullName"]), Value = Convert.ToString(row["PersNbr"]) });
}
this.cmbDDLFilter.DisplayMember = "Text";
this.cmbDDLFilter.ValueMember = "Value";
this.cmbDDLFilter.DataSource = items;
}
这将在设置ComboBox 的可视部分时起作用,但是当我这样做时:
long nbr = Convert.ToInt64(this.cmbDDLFilter.SelectedValue);
即使我将 .ValueMember 设置为 "Value",.SelectedValue 也将是 null。
我注意到虽然.SelectedText 也是null,但.SelectedItem 确实有我添加到列表中的对象。
如何让匿名对象的 .Value 真正与 .SelectedValue 一起使用?
我已将此SO question 用作参考,但它对我不起作用。
【问题讨论】:
-
你能发布完整的表单代码吗?
-
如果你有一个漂亮整洁的数据表,只需将它用作数据源。无需创建新的匿名类型并放置在新的对象列表中(不会有
Value属性)
标签: c# winforms combobox bindingsource