如何过滤gridview取决于文本框中更改的文本

时间:2015-07-19 18:58:03

标签: c# sql winforms ado.net

我希望过滤GridView取决于TextBox格式向下..我希望当我写例如ec时,它会显示所有公司名称包含{{1}的行然后,如果我更改了ec中的字符串,那么TextBox中的数据也会发生变化。

2 个答案:

答案 0 :(得分:2)

您是否尝试过数据网格上的行过滤器属性?

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

请参阅Brad Bruce的答案here作为例子。

答案 1 :(得分:0)

DoubleClick TextBox并在此处编写代码:

private void textBox1_TextChanged(object sender, EventArgs e)
{
    string sql = "SELECT * FROM Table WHERE Name LIKE @Name";
    using (SqlCommand cmd= new SqlCommand(sql, cn))
    {
      cmd.Parameters.AddWithValue("@Name", "%" + textBox1.Text + "%");
      //rest of the code
      //dataGridView.DataSource = your DataSource;
    }
}

修改:为避免在每次击键时从数据库中提取数据,请在textBox1_TextChanged事件中尝试此操作:

DataSet ds = new DataSet();//Populate ds from a SqlDataAdapter

private void textBox1_TextChanged(object sender, EventArgs e)
{
    DataView dv = ds.Tables[0].DefaultView;
    dv.RowFilter = string.Format("name LIKE '%{0}%'", textBox1.Text);
    dataGridView1.DataSource = dv;
}