2

これが私のコードです...

ここに1つのTextBoxがあります。いくつかのテキストを書くとき、自動的に文字列と一致し、すべての行を見つけます。

今..しかし私のコードでは..ここでは「ClientName」を使用してフィルタリングするだけで、すべての列からそのテキストを検索したい。

RowFilterplzですべての列を指定する方法は私に解決策を与えます

    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 に答える