通过C#中的多个表搜索dataGridView中的名称

时间:2015-08-19 09:15:51

标签: c# search datagridview

我有一个浏览按钮,可以将5个不同的表格浏览到DataGridView。我有一个scrollBar来完成它们。现在我需要进行搜索TextBox,如果我在其中写下类似" Milk"它会自动查找包含该名称/单词e.x的所有表。有5个表可以通过,但现在只有3个,因为只有3个包含单词milk。这是我的代码只搜索1表(我只有那么远)。谢谢!

private void textBox5_TextChanged(object sender, EventArgs e)
{
    DataView dv = new DataView(dt);
    dv.RowFilter = string.Format("Prece LIKE '%{0}%'", textBox5.Text);
    dataGridView1.DataSource = dv;
}

2 个答案:

答案 0 :(得分:0)

这样的事情:

private void textBox5_TextChanged(object sender, EventArgs e)
{
     // Your gridViews here
     var gridList = new List<DataGridView>() { yourGrid1, yourGrid2};

     foreach(DataGridView dv in gridList)
     {
         dv.RowFilter = string.Format("Prece LIKE '%{0}%'", textBox5.Text);
         dataGridView1.DataSource = dv;
     }
}

将您的DataGridViews添加到列表中,让它迭代它们。你只需要处理如何输出它。

请注意,我在这里没有编辑您的搜索方法。我刚刚添加了循环。

答案 1 :(得分:0)

如果您有一个DataGridView并且所有DataTables都相同

private void textBox5_TextChanged(object sender, EventArgs e)
        {           
            DataView dv = new DataView(dt);
            dv.RowFilter = string.Format("Prece LIKE '%{0}%'", textBox5.Text);

            DataTable dtMain=dv.ToTable().Copy();

            dv = new DataView(dt2);
            dv.RowFilter = string.Format("Prece LIKE '%{0}%'", textBox5.Text);
            dtMain.Merge(dv.ToTable());
            dv = new DataView(dt3);
            dv.RowFilter = string.Format("Prece LIKE '%{0}%'", textBox5.Text);
            dtMain.Merge(dv.ToTable());

            dataGridView1.DataSource = dtMain;
        }