Infragistics UltraWinGrid 摘要计算空字符串

Infragistics UltraWinGrid Summaries Counting Empty Strings

我正在使用 UltraWinGrid 显示数据 table 并使用 SummaryType.Count 显示 UltraGridBand 中的所有列。当显示摘要时,它表明 empty/whitespace 字符串也被计算在内,因此计数不正确。这是我起诉的代码示例。

private static void AddSummary(UltraGridBand band, SummaryType summaryType, CustomDataGridColumnItem columnItem)
{
band.Summaries.Add(summaryType, band.Columns[columnItem.ColumnName]);
}

是否可以配置 UltraWinGrid,使其不考虑 SummaryType.Count 上的 empty/whitespace 字符串?只是为了更清楚,DataTable 中的某些行包含空字符串,不应在 Summary.Count 中考虑它们。例如;共有三个字符串("ABC"、" "、"XYZ")。计数应该是 2,因为第二个字符串是 empty/whitespace.

尝试:

band.Summaries.Where(band.Columns[columnItem.ColumnName].ToString() != String.Empty).Add(summaryType, band.Columns[columnItem.ColumnName]);

编辑(关于@FurqanFas 的注释):

我的想法是检查值是否为 String.Empty。查看 this(正如他所建议的)可以为您提供正确的方法。

如果你想要一个简单的方法来做到这一点,你需要提供一个 ICustomSummaryCalculator...像这样的东西:

using Infragistics.Shared;
using Infragistics.Win;
using Infragistics.Win.UltraWinGrid;

private class CountNonEmptyStringsCalculator : ICustomSummaryCalculator 
{
    private decimal total = 0;

    public void BeginCustomSummary(SummarySettings summarySettings, RowsCollection rows )
    {
        total = 0;
    }

    public void AggregateCustomSummary(SummarySettings summarySettings, UltraGridRow row )
    {    
        object myString = row.GetCellValue(summarySettings.SourceColumn);    
        if ((myString is DBNull) || String.IsNullOrEmpty(myString.ToString()))
            return;
        total++;
    }

    public object EndCustomSummary( SummarySettings summarySettings, RowsCollection rows )      
    {
        return total;    
    }
}

然后添加如下摘要:

band.Summaries.Add("MySummary", 
                   SummaryType.Custom, 
                   new CountNonEmptyStringsCalculator(),           
                   band.Columns[columnItem.ColumnName],
                   SummaryPosition.Left,
                   null
                   );