在datagridview中过滤数据c#

我试图过滤掉我想要的数据,并隐藏所有其他数据。 这是我的代码列表,

private void searchButton_Click_1(object sender, EventArgs e) { BindingSource bs = new BindingSource(); bs.DataSource = dataGridView1.DataSource; bs.Filter = dataGridView1.Columns[1].HeaderText.ToString() + " LIKE '%" + searchTextBox.Text + "%'"; dataGridView1.DataSource = bs; } 

但是当我运行它时,它会提示我错误信息

“’ID’运算符后缺少操作数。”

我也试过这个,同样的错误信息。

 private void searchButton_Click_1(object sender, EventArgs e) { BindingSource bs = new BindingSource(); bs.DataSource = dataGridView1.DataSource; // bs.Filter = dataGridView1.Columns[1].HeaderText.ToString() + " LIKE '%" + searchTextBox.Text + "%'"; bs.Filter = "Sample ID like '*" + searchTextBox.Text + "*'"; dataGridView1.DataSource = bs; } 

有人可以帮我澄清一下这个问题吗? 谢谢。

尝试以下,

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

要么

在搜索文本框已更改事件中,请尝试以下操作,

 (dataGridView1.DataSource as DataTable).DefaultView.RowFilter = string.Format("Field = '{0}'", searchTextBox.Text); 

尝试以下

 BindingSource bs = new BindingSource(); bs.DataSource = dataGridView1.DataSource; bs.Filter = "[HeaderText] Like '%" + searchTextBox.Text + "%'"; dataGridView1.DataSource = bs; 

我将我的数据源设置为列表,并使用LINQ过滤datagridview。

 //Declare Global List _productList //Somewhere in code initialize datagridview DataGridView1.DataSource = _productList //TextBox TextChanged Function private void TxtSearchProduct_TextChanged(object sender, EventArgs e) { var result = _productList.Where(x => x.ProductName.Contains(TxtSearchProduct.Text)).ToList(); DataGridView1.DataSource = result; } 

我希望它有所帮助