我有一个这样的多列数据表, 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个空行。显示成员是否具有检查空值并仅加载填充值或以其他方式实现相同值的属性?
答案 0 :(得分:1)
在product列中有两个空值,在p1列中有一个空值。组合框按预期方式工作。如果要过滤这些值,请改为过滤数据源。组合框不负责过滤数据源。
这里是一个链接,如何从空值中过滤数据表: Filtering a empty string in DataTable
答案 1 :(得分: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;