【发布时间】:2017-11-19 12:57:51
【问题描述】:
我正在尝试使用 DefaultView.RowFilter 过滤我的 Datagridview,目前可以轻松地按一个单词对列表进行排序。我的问题是如何按多个单词过滤它。这是一个例子
我的数据网格视图将包括:
1 托皮卡
2 曼哈顿
3 达拉斯
4 达拉斯
5 托皮卡
6 威奇托
然后我会在文本框中输入“Wichita,Dallas,Manhattan”或“Wichita, Dallas,Manhattan”,然后它会过滤我的 DataGrid 以仅显示
2 曼哈顿
3 达拉斯
4 达拉斯
6 威奇托
这是我的代码。它不喜欢有一个数组值,其中 '%{s}%' 是但适用于单个过滤器,例如 '%{FilterTextBox.Text}%',FilterTextBox.Text 是“Dallas”甚至是“Dall” .
private void FilterTxtbox_TextChanged(object sender, EventArgs e)
{
if (uxFilterTxtbox.Text != "Type Here...") //IGNORE... This is for my watermark capibility
{
string[] s = uxFilterTxtbox.Text.Split(',');
(uxWiuInfoGrid.DataSource as DataTable).DefaultView.RowFilter =
$"WiuAddressCol + SubDivLongNameCol + StationNameCol + LineSegCol + MilepostCol + MilepostSuffixCol LIKE '%{s}%'";
}
}
【问题讨论】:
-
行过滤器使用类似 SQL 的语法。您必须将每个条件 OR 在一起。
-
谢谢我在下面发布了一个快速解决方案。如果有更好的方法请告诉我。
标签: c# datagridview filtering