我正在尝试使用文本框过滤我的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;