使用两个文本框过滤两列gridview

时间:2017-10-03 06:10:48

标签: c# c#-4.0 c#-3.0

我想根据两个文本框的输入过滤我的网格视图。 我有什么:

 private void textBox1_TextChanged_1(object sender, EventArgs e)
 {
    (dataGridView1.DataSource as DataTable).DefaultView.RowFilter = string.Format("[1] LIKE '%{0}%'", textBox1.Text);
 }

 private void textBox2_TextChanged(object sender, EventArgs e)
 {
    (dataGridView1.DataSource as DataTable).DefaultView.RowFilter = string.Format("[2] LIKE '%{0}%'", textBox2.Text);
 }
例如,第一列是" 123"第二栏是" clark"。

3 个答案:

答案 0 :(得分:0)

使用此代码段来实现您的需求

  DataSet ds = new DataSet();
    SqlConnection myCon = new SqlConnection(connectionstring);
    SqlDataAdapter adapter = new SqlDataAdapter(cmd, myCon);
    adapter.Fill(ds);
    DataView view = new DataView();
    view.Table = ds.Tables[0];
    view.RowFilter = "ColumnName = " + TextBox1.Text.Trim();
    GridView1.DataSource = view;
    GridView1.DataBind();

这是使用 ADO.Net 完成的。

修改以符合您的问题:

 private void Form1_Load(object sender, EventArgs e)
    {
        DataTable resultTable = new DataTable();
        string path = @"\\192.168.96.80\hrmspics";
        recFolders(path, ref resultTable);
        dataGridView1.DataSource = resultTable;
        dataGridView1.DataBind();

来自官方Microsoft MSDN:

使用DataBind()方法将数据从数据源绑定到GridView控件。此方法解析控件的活动模板中的所有数据绑定表达式。

答案 1 :(得分:0)

除了设置RowFilter的值之外,您还需要将数据绑定到gridview(再次),以便在UI上更新。

因此,您需要在两种方法中分配数据源,并在网格上调用DataBind()。像这样,

GridViewMain.DataSource = dataView;
GridViewMain.DataBind();

答案 2 :(得分:0)

我自己做了,但感谢所有想要帮助我的人。 :)

     private void textBox1_TextChanged_1(object sender, EventArgs e)
     {
         (dataGridView1.DataSource as DataTable).DefaultView.RowFilter = string.Format("[1] LIKE '%" + textBox1.Text + "%' and [2] like '%" + textBox2.Text + "%'");
     }