问题描述
我有 2 列的数据网格视图。
| ID | DateCol |
| 5 | 2021-02-12 03:05:01 |
| 4 | 2021-02-15 02:05:01 |
| 3 | 2021-02-15 05:05:01 |
| 2 | 2021-02-13 05:05:01 |
| 1 | 2021-02-12 05:05:01 |
关于将自定义过滤器应用于集合视图:
BindingListCollectionView collectionView = CollectionViewSource.Getdefaultview(ItemsSource);
collectionview.CustomFilter = $"CONVERT(DateCol,'System.String') >= #05:00:00#";
我只得到一个结果:
| 3 | 2021-02-15 05:05:01 |
好像是用今天的 DateTime,也就是 2 月 15 日。如何仅根据时间进行过滤?
预期输出是所有 3 个项目的时间分量大于 0500。
| 3 | 2021-02-15 05:05:01 |
| 2 | 2021-02-13 05:05:01 |
| 1 | 2021-02-12 05:05:01 |
谢谢
解决方法
this.defaultView.Filter =
w =>
{
var dateTimeColumn = w as DataTimeColumn;
return dateTimeColumn?.DateTimeCol.Hour > 5;
};
this.defaultView.Refresh();
当您将 ICollectionView 用作 DataGrid 的 ItemsSource 时,您可以使用上述代码段实现过滤。
,试试这个:
BindingListCollectionView collectionView = CollectionViewSource.GetDefaultView(ItemsSource) as BindingListCollectionView;
collectionView.CustomFilter = $"SUBSTRING(CONVERT(DateCol,'System.String'),11,8) >= #05:00:00#";