Пользовательский summerType в xtraGrid gridControl
Как добавить пользовательский summerType в xtraGrid gridControl?
Я хотел бы добавить SummerItem
к колонке в моем xtraGrid gridControl
названный total percent
whitch вычислит процент двух других столбцов.
Всего у меня есть 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
? если да, как можно использовать этот тип?
Может кто-нибудь мне помочь?
Спасибо
1 ответ
Я нашел решение здесь https://documentation.devexpress.com/#windowsforms/DevExpressXtraGridViewsGridGridView_CustomSummaryCalculatetopic
Работает идеально для меня
Я создаю две частные переменные в моем классе
private decimal _sumOfValues = 0;
private decimal _sumOfTotalValue = 0;
Создано custom summary type
в процентном столбце и в опции Tag
набранный percentageColumnCustomSummary
whitch - идентификатор этого итогового столбца
Создать событие на моем 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);
}
}
Это прекрасно работает!