5

我有两个DataView要排序,在 dgtest1 中我试图排除包含 a 的数据,Typeid != 25在 dgtest2 中我试图只显示数据 where Typeid == 25

当我单步执行代码时,我会抛出一个错误

“无法解释令牌'!' 在位置 6"。

有人可以告诉我如何正确使用字符串行过滤器吗?

参数有(Data Table table, string RowFilter, string Sort, DataViewRowState)

dgtest1.ItemsSource = new DataView(dttest1, "Typeid!= 25", "", DataViewRowState.CurrentRows);
dgtest2.ItemsSource = new DataView(dttest1, "Typeid == 25", "", DataViewRowState.CurrentRows);
4

1 回答 1

6

在第一个 Dataview 构造函数中用于 RowFilter 表达式的正确语法是

dgtest1.ItemsSource = new DataView(dttest1, "Typeid <> 25", "", DataViewRowState.CurrentRows);
                                                    ^^ 

在第二个你需要使用

dgtest2.ItemsSource = new DataView(dttest1, "Typeid = 25", "", DataViewRowState.CurrentRows);

DataView 构造函数中的 RowFilter 参数使用的语法与 DataColumn 的属性Expression使用的语法相同,它不像 C# 的相等运算符

编辑在下面的评论之后。如果 Typeid 是文本数据类型的数据库字段,那么您需要将 RowFilter 中使用的值括在单引号之间

dgtest1.ItemsSource = new DataView(dttest1, "Typeid <> '25'", "", DataViewRowState.CurrentRows);
dgtest2.ItemsSource = new DataView(dttest1, "Typeid = '25'", "", DataViewRowState.CurrentRows);

不过这似乎有点奇怪。如果 Typeid 字段包含数字,则应将其定义为数字数据类型。

于 2013-09-03T19:35:36.520 回答