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
);
我正在使用 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
);