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上过滤。看见