在RowFilter中,如何在C#中选择所有表列?

时间:2012-10-01 17:07:23

标签: c# rowfilter

这是我的代码......

这里我有一个TextBox。当写一些文本时自动匹配String和 找到所有的行..

现在..但是 在我的代码中...只使用“ClientName”过滤我希望搜索来自的文本 所有专栏..

如何在RowFilter中指定All The Column PLZ给我解决方案

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

4 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:1)

按照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();    

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

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

你可以尝试

dv.RowFilter = "Column1 + Column2 + Column3" + " Like '%" + txtSearch.Text + "%'";