2

这是我的代码...

这里我有一个文本框。编写某些文本时会自动匹配字符串并查找所有行..

现在..但是在我的代码中..这里仅使用“ClientName”过滤我想从所有列中搜索该文本..

如何指定 RowFilter 中的所有列请给我解决方案

    private void txtSearch_TextChanged(object sender, EventArgs e)
    {
      dv.RowFilter = "ClientName Like '%" + txtSearch.Text + "%'";
      dgClientMaster.DataSource = dv;
    }
4

5 回答 5

2

按照 Furqan Safdar 的代码,我得到了下面的解决方案对我来说很好。

StringBuilder sb = new StringBuilder();
foreach (DataGridViewColumn column in DGridView_Main.Columns)
{
  sb.AppendFormat("CONVERT({0}, System.String) LIKE '%{1}%' OR ", column.Name, TxtBx_FilterKeywordForGridView.Text);
}
sb.Remove(sb.Length - 3, 3);
(DGridView_Main.DataSource as DataTable).DefaultView.RowFilter = sb.ToString();    

我希望它也能帮助其他人。

于 2020-01-30T04:08:07.103 回答
1

试试这个代码:

private void txtSearch_TextChanged(object sender, EventArgs e)
{
    StringBuilder sb = new StringBuilder();

    foreach (DataColumn column in dv.Table.Columns)
    {
        sb.AppendFormat("{0} Like '%{1}%' OR ", column.ColumnName, txtSearch.Text);
    }

    sb.Remove(sb.Length - 3, 3);
    dv.RowFilter = sb.ToString();
    dgClientMaster.DataSource = dv;
}
于 2012-10-01T17:14:43.613 回答
1

你可以试试

dv.RowFilter = "[Column1] + [Column2] + [Column3]" + " Like '%" + txtSearch.Text + "%'";
于 2016-09-15T09:56:28.030 回答
0

您需要指定要搜索的列,并用OR子句分隔,如下所示:

dv.RowFilter = "ClientName Like '%" + txtSearch.Text + "%' OR ClientNickName Like '%" + txtSearch.Text + "%'"; 

此外,您需要转义单引号,否则您将遇到查询中断或 SQL 注入问题。

于 2012-10-01T17:09:13.503 回答
0
private void txtSearch_TextChanged(object sender, EventArgs e)
{
    List<string> columns = dataGrid1.Columns.Select(x => "[" + x.Header + "]").ToList();
    string query = String.Format("{0} Like '%{1}%'", String.Join("+", columns), txtSearch.Text);
    dv.RowFilter = query;
}
于 2021-12-06T03:48:00.987 回答