我在Windows窗体中有一个DataGridView
enter code here
,我是通过将对象拖放到窗体中而从数据源生成的。
从数据源正确显示行,我希望能够使用TextBox
按特定列过滤它们。
我的绑定源名为“customerBindingSource”。
我试过了:
private void _txtFilterEmail_TextChanged(object sender, EventArgs e){
customerBindingSource.DataSource = dataGridView1.DataSource;
customerBindingSource.Filter = dataGridView1.Columns[1].HeaderText.ToString() +
"LIKE '%" + _txtFilterEmail.Text + "%'";
dataGridView1.DataSource = customerBindingSource.DataSource;
}
但是当我在TextBox
中输入内容时,没有任何反应。
我对Windows窗体和EntityFramework相当新。
答案 0 :(得分:1)
这会将未经过滤的 DataSource
指定为DGV DataSource
:
dataGridView1.DataSource = customerBindingSource.DataSource;
应该分配BindingSource
本身:
dataGridView1.DataSource = customerBindingSource;
顺便说一句:我不认为依靠HeaderText
来包含Column
的名称是个好主意。相反,你应该使用更可靠的财产。想到这一点,未经测试:
dataGridView1.Columns[yourColumnIndex].DataPropertyName
答案 1 :(得分:0)
试试这个:
namespace
或使用此:
private void _txtFilterEmail_TextChanged(object sender, EventArgs e)
{
(dataGridView1.DataSource as DataTable).DefaultView.RowFilter =
string.Format("[{0}] LIKE '%{1}%'",
dataGridView1.Columns[1].HeaderText.ToString(),
_txtFilterEmail.Text);
}