XtraGrid 列中的唯一值列表

Posted

技术标签:

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

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

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

【问题讨论】:

【参考方案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 据我所知没有这样的收藏。

以上是关于XtraGrid 列中的唯一值列表的主要内容,如果未能解决你的问题,请参考以下文章

Pandas,对于一列中的每个唯一值,在另一列中获取唯一值

如何创建键字典:column_name 和 value:来自数据框的 python 中的列中的唯一值

根据列中的共同值将大数据框拆分为数据框列表

查找列中的唯一值并将唯一值替换为数字

计算唯一字段的列中的重复值

将列中的唯一值分隔到同一数据框中的单独列中