【问题标题】:List of unique values in a Column in XtraGridXtraGrid 列中的唯一值列表
【发布时间】:2012-01-15 09:58:14
【问题描述】:

有没有办法在 XtraGrid 的任何列中获取唯一值列表。当我单击列标题进行过滤时,它会显示列表(请参见附图'}')。

是否有任何 XtraGrid 对象或 Column 对象可以让我以数组或列表的形式获得它?

【问题讨论】:

    标签: c# .net winforms devexpress xtragrid


    【解决方案1】:

    像这样在 GridView 上实现它作为扩展方法怎么样

    using System;
    using System.Linq;
    using System.Collections.Generic;
    using DevExpress.XtraGrid.Views.Grid;
    
    namespace Extensions
    {
        public static class XtraGridExtensions
        {
            public static IEnumerable<string> GetColumnsDistinctDisplayText(this GridView gv, string columnName)
            {
                if (gv == null)
                {
                    throw new NullReferenceException("GridView is null");
                }
                if (gv.RowCount == 0)
                {
                    return Enumerable.Empty<string>();
                }
                return (from int row in Enumerable.Range(0, gv.RowCount - 1)
                        select gv.GetRowCellDisplayText(row, columnName)).Distinct().OrderBy(s => s);
            }
        }
    }
    

    只要你想使用它就这样使用它

    using Extensions;
    
    ...
    
    string msg = string.Empty;
    foreach (var item in gridView1.GetColumnsDistinctDisplayText("columnName"))
    {
        msg += item + "\n";
    }
    MessageBox.Show(msg);
    

    【讨论】:

    • 我已经实现了类似的东西,但使用了数据源和 columnName。
    • @CodingBarfield 不过使用网格的好处是,如果用户过滤了数据,它只会给你未过滤的值。
    • 谢谢@JoelWeiss,它对我有用,但我想知道是否已经有这样的值的集合,这样我们就不必循环执行 ".Distinct().OrderBy(s => s);"...
    • @EternalNoob 据我所知没有这样的收藏。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-03
    • 1970-01-01
    • 2020-03-10
    • 2019-04-22
    • 1970-01-01
    • 2012-01-15
    • 1970-01-01
    相关资源
    最近更新 更多