DataView行过滤

时间:2013-09-03 19:34:28

标签: c# wpf c#-4.0

我有两个DataView我试图排序,在dgtest1我试图除了包含Typeid != 25的数据的例外,而在dgtest2中我试图只显示数据在哪里Typeid == 25

当我单步执行代码时,我在说

时抛出错误
  

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

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

参数是(数据表表,字符串RowFilter,字符串排序,DataViewRowState)

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

1 个答案:

答案 0 :(得分: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是text数据类型的数据库字段,那么您需要将RowFilter中使用的值括在单引号之间

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

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

相关问题