Сводки Infragistics UltraWinGrid, подсчитывающие пустые строки

Я использую UltraWinGrid для отображения таблицы данных и использую SummaryType.Count для всех столбцов в UltraGridBand. Когда отображаются сводки, это показывает, что также подсчитываются пустые / пробельные строки, поэтому счетчик неверен. Вот пример кода, на который я подаю в суд.

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

Можно ли как-то настроить UltraWinGrid так, чтобы он не учитывал пустые/пробельные строки в SummaryType.Count? Просто чтобы было понятнее, некоторые строки в DataTable содержат пустые строки, и их не следует учитывать в Summary.Count. Например; есть три строки ("ABC", " ", "XYZ"). Количество должно быть 2, потому что вторая строка пуста/пробел.


person FurqanFas    schedule 30.04.2015    source источник


Ответы (2)


Если вам нужен простой способ сделать это, вам нужно предоставить 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
                   );    
person Jcl    schedule 30.04.2015
comment
Я написал код наобум, но я только что проверил его на очень маленьком проекте, и он работает как есть. - person Jcl; 30.04.2015

Пытаться:

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

Изменить (относительно заметок @FurqanFas):

Моя идея состояла в том, чтобы проверить, что значение не равно String.Empty. Глядя на это (как он предложил) может указать вам правильный путь.

person shapiro yaacov    schedule 30.04.2015
comment
Это хорошая идея, чтобы иметь небольшое объяснение в начале вашего решения. - person ughai; 30.04.2015
comment
спасибо за ваш вклад, но это не работает для меня. - person FurqanFas; 30.04.2015
comment
Я думаю, что лучший подход — предоставить реализацию ICustomSummaryCalculator. - person FurqanFas; 30.04.2015