我正在尝试获取.SelectedValue
中的ComboBox
,但是它一直返回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);
即使我将.SelectedValue
设置为null
,.ValueMember
也将是"Value"
。
尽管我注意到.SelectedText
也是null
,但是.SelectedItem
确实有我添加到列表中的对象。
如何使匿名对象的.Value
与.SelectedValue
一起实际使用?
我已将此SO question用作参考,但对我而言不起作用。
答案 0 :(得分:0)
尝试一下:
cmbDDLFilter.SelectedIndex = cmbDDLFilter.FindStringExact("Value")