我一直在尝试为dataTable创建搜索功能。我的问题是表的第一行总是在过滤的行中,即使布尔列实际上变为零。 这是我的搜索代码:
private void buscar()
{
DataTable dataTable;
if (!verTodos)
{
dataTable = DBHelper.Instance.ProductosConStock();
}
else
{
dataTable = DBHelper.Instance.ProductosTodos();
}
dataGridProductos.DataSource = dataTable.DefaultView;
foreach (DataGridViewRow row in dataGridProductos.Rows)
{
if (row.Cells[0].Value.ToString().ToUpper().Contains(txtBusqueda.Text.ToString().ToUpper()) ||
row.Cells[1].Value.ToString().ToUpper().Contains(txtBusqueda.Text.ToString().ToUpper()) ||
row.Cells[2].Value.ToString().ToUpper().Contains(txtBusqueda.Text.ToString().ToUpper()))
{
row.Cells[4].Value = 1;
}
else
{
row.Cells[4].Value = 0;
}
}
dataTable.DefaultView.RowFilter = "mostrar = 1";
}
答案 0 :(得分:7)
尝试从数据表创建DataView并基于此运行过滤器。 下面是我尝试的一个快速示例,它工作正常。
DataTable dt = new DataTable();
dt.Columns.Add("bool", typeof(Boolean));
dt.Rows.Add(true);
dt.Rows.Add(false);
dt.Rows.Add(true);
DataView dv = new DataView(dt);
dv.RowFilter = "bool = 1";
foreach (DataRowView drv in dv)
{
Console.WriteLine(drv[0].ToString());
}