none
如何在DataGrid列标题中制作一个简单的类似Access 2013的表列标题中的倒三角型筛选器 RRS feed

  • 问题

  • 给个思路。想了很久也想不出来,

    上面是Access中的下拉框,其呈现方式是这样的

    。弹出下拉框即呈现表格视图中该列的所有无重复统计项(不是数据源中对应列的无重复统计项),当选取某个项会在原有的筛选基础下生成新的视图。

    在WPF DataGrid我在列标题中设置了一个命令按钮,单击则弹出一个 ListBox ,我希望也会呈现出如上的效果?难点是如何获取当前视图(在已筛选基础下)中的无重复列值统计项。

    给个思路如何写代码统计某列的无重复项并将这些项呈现到ListBox中

    (因为我使用BindingListCollectionView ,基础DataTable对象都没有成功找到方法)

    2016年5月14日 9:07

答案

  • 您好 joelylee,

    >>"难点是如何获取当前视图(在已筛选基础下)中的无重复列值统计项。"

    在这里您可以遍历DataGrid的所有Items。您可以设个断点看下item的数据类型然后执行下数据类型转换。就可以得到当前行的数据。

    foreach (var item in DataGrid1.Items)
    {
        //在这设个断点,您就可以看到item的数据类型
        string value; //从Row中获取需要的当前列的值。
    }

    当我们可以获得DataGrid中每一行此列值得时候我们就可以通过对比筛选掉重复的值。

    List<string> distinctItems = new List<string> ();
    foreach (var item in DataGrid1.Items)
    {
        string value;
        if (!distinctItems.Contains(value))
        {
            distinctItems.Add(value);
        }
    }
    Best Regards,
    Li Wang

    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    • 已标记为答案 joelylee 2016年5月17日 2:52
    2016年5月16日 6:10