我如何过滤c# dataGridView跨所有字段名

本文关键字:dataGridView 字段 何过滤 过滤 | 更新日期: 2023-09-27 18:17:03

我看到在这个视频中很容易添加一个文本框并让它驱动datagridView的过滤。问题是,在这个视频中,你似乎必须指定要过滤的列。

 RowFilter = "FirstName like "%' + searchText.Text + '%" 

但如果我想让它检查所有字段并显示包含搜索字符串的列

我如何过滤c# dataGridView跨所有字段名

您可能希望遍历行中的每个列并附加一个OR比较

这是一段非常愚蠢的代码,但希望能让你了解它的要点。比如:

StringBuilder filter = new StringBuilder();
foreach(var column in dataGridView.Columns)
{
   if(filter.ToString() == "")
   {
       filter.Append(column.Name + " like '" + searchText.Text + "'");
   }
   else 
   {
      filter.Append(" OR ");
      filter.Append(column.Name + " like '" + searchText.Text + "'");
   }
}
RowFilter = filter.ToString();

你可以遍历所有合理的列,得到" like ";像这样的过滤器:

var search = "search request";
var columnsList = dataGridView.Columns.Cast<DataGridViewColumn>()
    .Where(x => x.Visible && x.ValueType == typeof(string))
    .Select(x => x.DataPropertyName);
var filter = string.Join(" OR ", columnsList.Select(x => $"{x} like '%{search}%'"));