rowfilter总是返回第一行

本文关键字:一行 返回 rowfilter | 更新日期: 2023-09-27 18:17:32

我一直在尝试为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";
    }

rowfilter总是返回第一行

尝试从数据表创建一个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());
        }