WPF筛选、排序和分组

可以通过CollectionViewSource或者CollectionView对视图进行排序、筛选和分组。

一、通过CollectionViewSource

listingDataView是CollectionViewSource的一个实例。

1、排序

listingDataView.SortDescriptions.Add( new SortDescription("Category", ListSortDirection.Ascending));
istingDataView.SortDescriptions.Add( new SortDescription("StartDate", ListSortDirection.Ascending));

2、筛选

需要为Filter事件设置处理程序,在处理程序中提供数据的筛选逻辑

listingDataView.Filter += new FilterEventHandler(ShowOnlyBargainsFilter);

private void ShowOnlyBargainsFilter(object sender, FilterEventArgs e)
{
    AuctionItem product = e.Item as AuctionItem;
    if (product != null)
    {
        // Filter out products with price 25 or above
        if (product.CurrentPrice < 25)
        {
            e.Accepted = true;
        }
        else
        {
            e.Accepted = false;
        }
    }
}

3、分组

PropertyGroupDescription groupDescription = new PropertyGroupDescription();
groupDescription.PropertyName = "Category";
listingDataView.GroupDescriptions.Add(groupDescription);

二、通过CollectionView

myCollectionView是ListCollectionView的一个实例。通常使用CollectionViewSource获取。

1、排序

myCollectionView.SortDescriptions.Clear();
myCollectionView.SortDescriptions.Add(new SortDescription("OrderItem", ListSortDirection.Ascending));
myCollectionView.SortDescriptions.Add(new SortDescription("Customer",ListSortDirection.Ascending));

2、筛选

定义用来提供筛选逻辑的方法

public bool Contains(object de)
{
    Order order = de as Order;
    //Return members whose Orders have not been filled
    return(order.Filled== "No");
}

使用 Filter 属性来指定回调方法

myCollectionView.Filter = new Predicate<object>(Contains);

这种方式比较方便,通过指定不同的回调即可实现筛选,不必像CollectionViewSource那样添加删除事件(我想是这样的,没有验证)

3、分组

同CollectionViewSource的分组

时间: 2024-10-06 00:45:32

WPF筛选、排序和分组的相关文章

#研发解决方案介绍#基于ES的搜索+筛选+排序解决方案

郑昀 基于胡耀华和王超的设计文档 最后更新于2014/12/3 关键词:ElasticSearch.Lucene.solr.搜索.facet.高可用.可伸缩.mongodb.SearchHub.商品中心 本文档适用人员:研发和运维 提纲: 曾经的基于MongoDB的筛选+排序解决方案 MongoDB方案的缺陷 看中了搜索引擎的facet特性 看中了ES的简洁 看中了ES的天生分布式设计 窝窝的ES方案 ES的几次事故和教训 ES自身存在的问题 首先要感谢王超和胡耀华两位研发经理以严谨治学的研究精

最常用的SQL排序、分组与统计的使用方法

以一种有意义的方式组织数据可能是一项挑战.有时你需要的可能是一个简单的排序,但是通常你需要做更多,你需要分组来进行分析和统计.幸运的是,SQL提供了大量语句和操作来进行排序,分组和摘要.下面的一些技巧将会帮助你识别什么时候排序,什么时候分组,什么时候以及如何统计.对要每条语句和操作的详细信息请查看Books Online. 1. 使用排序使数据有序 通常,你的所有数据真正需要的仅仅是按某种顺序排列.SQL的ORDER BY语句可以以字母或数字顺序组织数据.因此,相似的值按组排序在一起.然而,这个

(转)最常用的SQL排序、分组与统计的使用方法 Order by/Group by/having等的使用

以一种有意义的方式组织数据可能是一项挑战.有时你需要的可能是一个简单的排序,但是通常你需要做更多,你需要分组来进行分析和统计.幸运的 是,SQL提供了大量语句和操作来进行排序,分组和摘要.下面的一些技巧将会帮助你识别什么时候排序,什么时候分组,什么时候以及如何统计.对要每条语句 和操作的详细信息请查看Books Online. 1. 使用排序使数据有序 通常,你的所有数据真正需要的仅仅是按某种顺序排列.SQL的ORDER BY语句可以以字母或数字顺序组织数据.因此,相似的值按组排序在一起.然而,

MySQL进阶5--分组排序和分组查询 group by(having) /order by

MySQL进阶--分组排序和分组查询 group by(having) /order by /* 介绍分组函数 功能:用做统计使用,又称为聚合函数或组函数 1.分类: sum, avg 求和 /平均数, 只处理数值型,都绝对忽略NULL值(avg处理时统计的个数没有null项) max ,min ,可以求字符串最大最小 ,可以匹配日期,都绝对忽略NULL值 count ,不计算NULL ,不把null算进数里 #2. 参数支持类型 SELECT MIN(last_name) ,MAX(last_

Hadoop学习笔记—11.MapReduce中的排序和分组

一.写在之前的 1.1 回顾Map阶段四大步凑 首先,我们回顾一下在MapReduce中,排序和分组在哪里被执行: 从上图中可以清楚地看出,在Step1.4也就是第四步中,需要对不同分区中的数据进行排序和分组,默认情况下,是按照key进行排序和分组. 1.2 实验场景数据文件 在一些特定的数据文件中,不一定都是类似于WordCount单次统计这种规范的数据,比如下面这类数据,它虽然只有两列,但是却有一定的实践意义. 3 3 3 2 3 1 2 2 2 1 1 1 (1)如果按照第一列升序排列,当

Excel碰到空行无法筛选排序解决方法

Excel碰到空行无法筛选排序解决方法 有时候excel可真心考人智商,一列中有空行,那么你就只能筛选排序首个空行前的内容了,解决方法来了,做个小记录,以防今后忘了. 1.在首列插入一列: 2.全选该列输入1,使用快捷键"Ctrl+回车键"填充整列: 3.选择首行,点击"数据-->筛选-->自动筛选",现在可以全部筛选及排序了 Excel碰到空行无法筛选排序解决方法,布布扣,bubuko.com

hive分组排序函数 分组取top10

hive分组排序函数 分组取top10 语法:row_number() over( partition by 字段a order by 计算项b desc) rank --这里rank是别名 Partition by:类似hive的建表,分区的意思 这里按字段a分区,对计算项b进行降序排序 实例: 要取top10品牌,各品牌的top10渠道,各品牌的top10渠道中各渠道的top10档期 1) 取top10品牌 Select 品牌,count/sum/其他() as num from tb_na

ListView中排序和分组(GroupTemplate)的使用实例演示

.aspx代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="8_Group_Sort.aspx.cs" Inherits="Group_Sort" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3

MapReduce框架排序和分组

前言: Mapreduce框架就是map->reduce,其中Map中的<key,value>是偏移量和行值,在其之前会使用job.setInputFormatClass定义的InputFormat将输入的数据集分割成小数据块splites,同时InputFormat提供一个RecordReder的实现.本例子中使用的是TextInputFormat,他提供的RecordReder会将文本的一行的行号作为key,这一行的文本作为value.这就是自定义Map的输入是<LongWri

LINQ之路14:LINQ Operators之排序和分组(Ordering and Grouping)

本篇继续LINQ Operators的介绍,这里要讨论的是LINQ中的排序和分组功能.LINQ的排序操作符有:OrderBy, OrderByDescending, ThenBy, 和ThenByDescending,他们返回input sequence的排序版本.分组操作符GroupBy把一个平展的输入sequence进行分组存放到输出sequence中. 排序/Ordering IEnumerable<TSource>→IOrderedEnumerable<TSource> O