【问题标题】:ComboBox SelectedValue is null [duplicate]ComboBox SelectedValue 为空 [重复]
【发布时间】: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


【解决方案1】:

试试这个:

cmbDDLFilter.SelectedIndex = cmbDDLFilter.FindStringExact("Value")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-21
    • 2015-09-10
    • 1970-01-01
    • 2018-05-24
    • 1970-01-01
    • 2021-07-07
    • 2015-10-06
    相关资源
    最近更新 更多