Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么使用CollectionView筛选数据表时出错?_C#_Wpf_Datagrid_Filter - Fatal编程技术网

C# 为什么使用CollectionView筛选数据表时出错?

C# 为什么使用CollectionView筛选数据表时出错?,c#,wpf,datagrid,filter,C#,Wpf,Datagrid,Filter,如标题所示 因此,我成功地将数据表放入我的收藏视图,使用: ICollectionView _collectionView { get; set; } public ICollectionView collectionView {......} DataTable myDataTable= new DataTable(); myConnection.Open(); dbAdpater.Fill(myData

如标题所示

因此,我成功地将
数据表
放入我的
收藏视图
,使用:

    ICollectionView _collectionView { get; set; }
    public ICollectionView collectionView {......}

            DataTable myDataTable= new DataTable();
            myConnection.Open();
            dbAdpater.Fill(myDataTable);
            myConnection.Close();
            var collectionList= (newLeadTable as IListSource).GetList();
            this.collectionView = CollectionViewSource.GetDefaultView(collectionList);
我知道列表中的每个对象都是
DataRowView
,正如我通过迭代数据进行测试时所看到的那样,它们被正确存储

执行代码时,
DataGrid
正确显示

但一旦我添加了过滤器:

            this.collectionView.Filter = new Predicate<object>(
                (obj) =>
                {
                    return false; //Just for testing propose
                }
            );
this.collectionView.Filter=新谓词(
(obj)=>
{
return false;//仅用于测试
}
);
当我执行代码时,会出现错误:

无法创建程序集“TestWPF”中定义的“Window1”的实例, 版本=1.0.0.0,区域性=中性,PublicKeyToken=null'。例外是 被调用的目标抛出。标记文件中出现错误 "测试wpf,;组件/窗口1.xaml'行1位置9

和输出:

“System.NotSupportedException”类型的首次意外异常 发生在PresentationFramework.dll中

我还尝试将
数据表
转换为一个
自定义对象列表
进行过滤,但效果良好

因此,我想知道在使用
DataTable
进行筛选时,我做错了什么?

请参见

为了提高性能,ADO.NET DataTable或DataView对象的集合视图将排序和筛选委托给DataView

BindingListCollectionView
不支持筛选。相反,您必须使用属性,该属性接受筛选器字符串并将其用作基础
DataView.RowFilter
属性的值。字符串值是SQL,用于在SELECT查询中构造WHERE子句

this.collectionView.CustomFilter = "Price > 20";

如果要使用多个条件,则必须将它们与AND或or(就像SQL一样)串在一起。

hmm?我正在使用CollectionView for ADO.NET DataTable并过滤到DataView…您的代码表明您正在CollectionView上过滤。看见