网格视图在两个总和之间获取差额

本文关键字:之间 获取 两个 视图 网格 | 更新日期: 2023-09-27 18:35:36

我正在使用devexpress XtraGrid控件。我的问题是:我想获取第一列的总和,然后是第二列。我最终想减去第二列总和的第一列的总和,并在页脚中显示网格......

Sum1Columns - Sum2Columns = balance

然后在数据网格控件上显示平衡 - 页脚(在 1 列下方)

dgvVIEW.Columns(1).Name = "PROMDUGU"
dgvVIEW.Columns(1).Caption = "1COLUMN"
dgvVIEW.Columns(1).Visible = True
dgvVIEW.Columns(1).DisplayFormat.FormatType = FormatType.Numeric
dgvVIEW.Columns(1).DisplayFormat.FormatString = "c2"
dgvVIEW.Columns(1).SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Custom
dgvVIEW.Columns(1).SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Sum
dgvVIEW.Columns(1).SummaryItem.DisplayFormat = "SUM= {0:n2}"
dgvVIEW.Columns(2).Name = "PROMPOTR"
dgvVIEW.Columns(2).Caption = "2COLUMN"
dgvVIEW.Columns(2).Visible = True
dgvVIEW.Columns(2).DisplayFormat.FormatType = FormatType.Numeric
dgvVIEW.Columns(2).DisplayFormat.FormatString = "c2"
dgvVIEW.Columns(2).SummaryItem.SummaryType =  DevExpress.Data.SummaryItemType.Sum
dgvVIEW.Columns(2).SummaryItem.DisplayFormat = "Sum= {0:n2}"

网格视图在两个总和之间获取差额

将另一个合计字段添加到第 2 列,并将其类型设置为自定义。

dgvVIEW.Columns(2).Summary.Add(new GridColumnSummaryItem(SummaryItemType.Custom, "customBalance", "Balance= {0:c2}"));

然后处理自定义摘要计算事件。

private void dgvVIEW_CustomSummaryCalculate(object sender, CustomSummaryEventArgs e) {
    if (e.SummaryProcess == CustomSummaryProcess.Start) {
      this.sum1 = 0; // <--- class member !
      this.sum2 = 0; // <--- class member !
      return; 
    }
    if (e.SummaryProcess == CustomSummaryProcess.Calculate) {
      if (e.Item.FieldName == "PROMDUGU" {
        this.sum1 += Convert.ToDecimal(e.FieldValue);
        return;
      } 
      if (e.Item.FieldName == "PROMPOTR" {
        this.sum2 += Convert.ToDecimal(e.FieldValue);
        return;
      } 
      return; 
    }

    if (e.SummaryProcess == CustomSummaryProcess.Finalize && e.Item.FieldName == "customBalance") {
       e.TotalValue = sum1 - sum2;
    }
}