我有两个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);
答案 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字段包含数字,则应将其定义为数值数据类型。