我有一个像这样的多列数据表,datatable
我正在把它加载到一个组合盒里。
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
datatable osdat = Loaddatatable();
postOScomboBox2.DataSource = osdat;
postOScomboBox2.DisplayMember = "Product";
postOScomboBox2.ValueMember = "Product";
postOScomboBox2.SelectedIndex = -1;
}p2组合框不仅显示p1,还显示两个额外的空行。如果我加载p1列,也会发生同样的情况,combobox中显示1个空行。display成员是否有任何属性来检查空值并仅加载已填充的值,或以任何其他方式实现相同的值?
发布于 2018-08-23 13:22:34
您可以使用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;发布于 2018-08-23 12:51:00
在product列中有两个空值,在p1列中有一个空值。Combobox的工作方式与预期一致。如果要筛选这些值,请改为筛选您的数据源。过滤数据源不是combobox的责任。
下面是如何从空值中过滤数据表的链接:Filtering a empty string in DataTable
https://stackoverflow.com/questions/51978370
复制相似问题