过滤我的DataGridView

时间:2016-05-04 11:02:31

标签: c# entity-framework datagridview

我在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相当新。

2 个答案:

答案 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);
}