Всего от GroupSummary до TotalSummary в DevExpress - PullRequest
0 голосов
/ 05 мая 2011

В моем ASPxGridView,

я получаю всего просто IPOTEK столбец в нижнем колонтитуле с этим кодом;

<TotalSummary>
<dx:ASPxSummaryItem FieldName="IPOTEK" SummaryType="SUM" ShowInGroupFooterColumn="IPOTEK" DisplayFormat="n0" />
</TotalSummary>

И я получаю среднее значение IPOTEK столбца, когда ягруппировка в нижнем колонтитуле группы.

<GroupSummary>
 <dx:ASPxSummaryItem FieldName="IPOTEK" SummaryType="AVERAGE" ShowInGroupFooterColumn="IPOTEK" DisplayFormat="n0" />
</GroupSummary>

Все в порядке.Например, когда я группируюсь с, это выглядит так;(IPOTEK столбец начинается 109,827 )

enter image description here

То, что я хочу;в TotalSummary, только всего GroupSummary значений для столбца IPOTEK.

Rigth сейчас, для этих данных добавляется TotalSummary значение 109.827 * 3 = 329.481 (GroupSummary * 3)

Что я хочу, для этих данных только добавление и только GropupSummary значение к TotalSummary.

Как я могу это сделать?

С наилучшими пожеланиями, Сонер

1 Ответ

2 голосов
/ 05 мая 2011

Ну, нет простого решения этой задачи.Я вижу две альтернативы:

1) использовать пользовательскую сводку для сводки нижнего колонтитула и на этапе DevExpress.Data.CustomSummaryProcess.Finalize попытаться выполнить все строки группы, получитьсоответствующие итоговые значения и суммировать их.Чтобы пройти через строки группы, используйте следующий код:

protected void ASPxGridView1_CustomSummaryCalculate(object sender, DevExpress.Data.CustomSummaryEventArgs e) {
    if(e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Finalize) { 
        ASPxGridView grid = sender as ASPxGridView;
        double total = 0;
        for(int i = 0; i < grid.VisibleRowCount; i++) 
            if(grid.IsGroupRow(i)) 
                total += Convert.ToDouble(grid.GetGroupSummaryValue(i, grid.GroupSummary[0]));
        e.TotalValue = total;
        e.TotalValueReady = true;
    }
}

2) используйте метку в контейнере FooterTemplate столбца и обработайте PreRender GridView и BeforeGetCallbackResult , чтобы установить это значение метки.Значение должно быть рассчитано с использованием приведенного выше кода.

Надеюсь, это поможет.

ОБНОВЛЕНИЕ

почему используется этот код:

if (grid.IsGroupRow(7))

7 - это visibleRowIndex, вы должны передать туда параметр i

...