【问题标题】:c# combobox DisplayMember showing empty rows from datatablec# combobox DisplayMember 显示数据表中的空行
【发布时间】:2018-08-23 04:34:20
【问题描述】:

我有一个这样的多列数据表, datatable

我正在将它加载到组合框。

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {

            datatable osdat = Loaddatatable();
            postOScomboBox2.DataSource = osdat;
            postOScomboBox2.DisplayMember = "Product";
            postOScomboBox2.ValueMember = "Product";
            postOScomboBox2.SelectedIndex = -1;

    }

组合框不仅显示 p1,p2,还显示两个额外的空行。 如果我加载 p1 列也会发生同样的情况,组合框中显示 1 个空行。显示成员是否有任何属性来检查空值并仅加载填充的值或任何其他方式来实现相同的效果?

【问题讨论】:

    标签: c# winforms datatable


    【解决方案1】:

    您可以使用 System.Linq 中的方法过滤表。

    datatable osdat = Loaddatatable();
    var filteredTable = osdat.AsEnumerable()
         .Where(row => row.Field<String>("Product") != null).CopyToDataTable();
    postOScomboBox2.DataSource = filteredTable;
    postOScomboBox2.DisplayMember = "Product";
    postOScomboBox2.ValueMember = "Product";
    postOScomboBox2.SelectedIndex = -1;
    

    【讨论】:

    • @DarshanN 如果对您有用,请不要忘记将此答案标记为完整! :)
    【解决方案2】:

    您在产品列中有两个空值,在 p1 列中有一个空值。组合框按预期工作。如果您想过滤这些值,请过滤您的数据源。过滤数据源不是组合框的职责。

    这是一个如何从空值中过滤数据表的链接: Filtering a empty string in DataTable

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-11
      • 2016-11-30
      相关资源
      最近更新 更多