пользовательский летний тип в xtraGrid gridControl

Как добавить собственный тип лета в xtraGrid gridControl?

Я хотел бы добавить SummerItem к столбцу в моем xtraGrid gridControl с именем total percent, который будет вычислять процентное соотношение двух других столбцов.

Всего у меня есть 3 столбца 1. Количество предметов A 2. Общее количество и 3. Процент

Также у меня есть summaryItems с

1. Sum of column 1 (`Quantities of Item A`)
2. Sum of column 2 (`Total Quantities`) and 
3. Total Percentage whitch I would like to make a divition with ( column 1 / column 2 ) * 100

Мой вопрос, как я могу это сделать? Я должен использовать Custom Summary Type ? если да, как можно использовать этот тип?

Может кто-нибудь мне помочь?

Спасибо


person A. Zalonis    schedule 06.05.2014    source источник


Ответы (1)


Я нашел решение здесь https://documentation.devexpress.com/#windowsforms/DevExpressXtraGridViewsGridGridView_CustomSummaryCalculatetopic

Идеально работает для меня

Я создаю две частные переменные в своем классе

private decimal _sumOfValues = 0;
private decimal _sumOfTotalValue = 0;

Создал custom summary type в процентном столбце и в опции Tag набрал percentageColumnCustomSummary, который является идентификатором этого итогового столбца.

Создайте событие на моем xtraGrid

private void allocationGridView_CustomSummaryCalculate(object sender, DevExpress.Data.CustomSummaryEventArgs e) 

И набрал ниже код

private void allocationGridView_CustomSummaryCalculate(object sender, DevExpress.Data.CustomSummaryEventArgs e) 
        {
            try
            {
                //int summaryID = Convert.ToInt32((e.Item as GridSummaryItem).Tag);
                string summaryTag = Convert.ToString((e.Item as GridSummaryItem).Tag);
                GridView View = sender as GridView;

                // Initialization 
                if (e.SummaryProcess == CustomSummaryProcess.Start) {

                    _sumOfValues = 0;
                    _sumOfTotalValue = 0;
                }

                //Calculate
                if (e.SummaryProcess == CustomSummaryProcess.Calculate) {

                    decimal colValueColumnValue = Convert.ToDecimal( View.GetRowCellValue(e.RowHandle, "Value") );
                    decimal colTotalValueColumnValue = Convert.ToDecimal( View.GetRowCellValue(e.RowHandle, "TotalValue") );

                    switch (summaryTag) {
                        case "percentageColumnCustomSummary":
                            _sumOfValues += colValueColumnValue;
                            _sumOfTotalValue += colTotalValueColumnValue;
                            break;
                    }
                }

                // Finalization 
                if (e.SummaryProcess == CustomSummaryProcess.Finalize) {
                    switch (summaryTag) {
                        case "percentageColumnCustomSummary":
                            e.TotalValue = 0;
                            if (_sumOfTotalValue != 0) {
                                e.TotalValue = (_sumOfValues / _sumOfTotalValue);
                            }

                            break;
                    }
                }  
            }
            catch (System.Exception ex)
            {
                _logger.ErrorException("allocationGridView_CustomSummaryCalculate", ex);
            }

        }

Это отлично работает!

person A. Zalonis    schedule 08.05.2014