自定义合计(按条件)
设置GridVIew的ShowFooter属性为true
再设置要显示合计的列Column的SummeryItem属性如图
- Case1
private void gv_Deal_CustomSummaryCalculate(object sender, DevExpress.Data.CustomSummaryEventArgs e)
{
var row = e.Row as ReportPayAccountViewModel;
int summaryId = Convert.ToInt32((e.Item as DevExpress.XtraGrid.GridSummaryItem).Tag);
if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Start)
{
customSum1 = 0;
customSum2 = 0;
customSum3 = 0;
}
if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Calculate)
{
var col = e.Item as GridColumnSummaryItem;
if (col != null )
{
if (col.FieldName == "col1" && row.status)
{
customSum1 += Convert.ToDecimal(e.FieldValue);
}
else if (col.FieldName == "col2" && row.status)
{
customSum2 += Convert.ToDecimal(e.FieldValue);
}
else if (col.FieldName == "col3" && row.status)
{
customSum3 += Convert.ToDecimal(e.FieldValue);
}
}
}
if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Finalize)
{
switch (summaryId)
{
case 1:
e.TotalValue = customSum1;
break;
case 2:
e.TotalValue = customSum2;
break;
case 3:
e.TotalValue = customSum3;
break;
}
}
}
- Case2(单元格合并导致合计异常处理)
private void gridv_CustomSummaryCalculate(object sender, DevExpress.Data.CustomSummaryEventArgs e)
{
List<ViewModel> data = gridv.DataSource as List<ViewModel>;
decimal sum = data.GroupBy(r => new { r.FormCode,r.FormRec}).Sum(r => r.Key.FormRec).Value;
var col = e.Item as GridColumnSummaryItem;
if (col != null)
{
if (col.FieldName == "FormRec")
{
e.TotalValue = sum;
}
}
}