В RowFilter, как выбрать все столбцы таблицы в C #?

Вот мой код ...

Здесь у меня есть одно текстовое поле. При написании некоторого текста автоматически сопоставьте строку и найдите все строки ..

теперь ..но в моем коде .. здесь Только фильтр с использованием "ClientName", я хочу искать этот текст во всех столбцах ..

Как указать все столбцы в RowFilter, пожалуйста, дайте мне решение

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

person Hiral Bhimani    schedule 01.10.2012    source источник
comment
Я не вижу одного правильного способа сделать это, но вы пытались объединить запрос? Что-то вроде: ClientName Like '% + txtSearch.Text +%' И OtherColumn Like '% + txtSeach.Text +%' И ...   -  person PiLHA    schedule 01.10.2012


Ответы (4)


Попробуйте этот код:

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;
}
person Furqan Safdar    schedule 01.10.2012

Следуя коду Фуркана Сафдара, я получил следующее решение, отлично работающее для меня.

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

Надеюсь, это поможет и другим.

person Ngô Trần Khánh Đăng    schedule 30.01.2020

Вам нужно будет указать столбцы, в которых вы хотите выполнить поиск, и разделить их предложением OR, например:

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

Кроме того, вам нужно избегать одинарных кавычек, иначе вы получите неработающий запрос или проблемы с SQL-инъекцией.

person D'Arcy Rittich    schedule 01.10.2012

Ты можешь попробовать

dv.RowFilter = "Column1 + Column2 + Column3" + " Like '%" + txtSearch.Text + "%'";
person amit poddar    schedule 15.09.2016