使用TextBox进行DataGridView过滤(C#)

时间:2015-03-19 18:09:05

标签: c# sqlite datagridview textbox

我正在尝试使用文本框过滤我的dgv。

我已经研究过几种过滤dgv的方法,很多解决方案涉及到涉及数据库。

我的程序有一个数据库,在启动时加载到dgv上。我想过滤dgv,最好不要触及数据库。

截至目前,我有一个过滤器,但它使用数据库。此外,它使用SQLiteDataAdapter函数将数据转换为数据表。

...使用SQLiteDataAdapter函数会导致我的dgv出现一些大问题,因为它会创建重复的列;这就是我读取(DataReader)数据的原因,而不是使用DataAdapter函数。

这是我的代码部分:

LOAD FORM:

            string qry = "SELECT * FROM table1";
            sqlcmd = new SQLiteCommand(qry, sqlconnection);
            sqlda = new SQLiteDataAdapter();
            dt = new DataTable();

            sqlda.SelectCommand = sqlcmd;
            sqlda.Fill(dt);
            dataGridView1.DataSource = dt;

TEXT CHANGED EVENT:

        DataView dv = new DataView(dt);
        dv.RowFilter = string.Format("Item LIKE '%{0}%'", textBox1.Text);
        dataGridView1.DataSource = dv;

此代码完成了工作,但正如我之前所说,使用SQLiteDataAdapter为我创建了重复的列。 那么如何仅使用dgv和文本框来过滤数据?

(我看过几个“解决方案”,其中没有一个对我有用) 这是最常见的: ((DataTable)dataGridView1.DataSource).DefaultView.RowFilter = "Item like'%" + textBox1.Text.Trim() + "%'";

我收到错误:“对象引用未设置为对象的实例。”

还尝试使用:

        BindingSource bs = new BindingSource();
        bs.DataSource = dataGridView1.DataSource;
        bs.Filter = "Item like '%" + textBox1.Text + "%'";
        dataGridView1.DataSource = bs;

0 个答案:

没有答案
相关问题