3

我正在使用绑定到数据源的 DevExpress xtragrid ......一切都很好。我添加了 1 个未绑定的列(余额)来保存计算结果。当网格中任何地方的借方和/或贷方列发生变化时,“余额”列必须重新计算。鉴于可能有大量记录,我希望循环语句不是我唯一的选择。相反,我希望使用表达式编辑器找到解决方案。

例子:

dr      cr      balance
100     0       100
0       50      50
0       45      5
4

1 回答 1

4
  1. 在您的数据源中创建一个名为Amount的新列。在此列中,您将借方和贷方存储正值和负值
  2. 向您的 xtragrid 添加一个新列。将其命名为 colRunningBalance
  3. 将列的 UnboundType 设置为十进制。这告诉网格您将自己处理数据
  4. 将以下事件添加到网格的表单中。代码在 VB.NET 中,但应该很容易转换为任何语言

    Private Sub gridView_CustomUnboundColumnData(sender As System.Object, e As DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgs) Handles
    gvCash.CustomUnboundColumnData
                 Dim view = DirectCast(sender, GridView)
    
            If e.Column.FieldName = "colRunningBalance" And e.IsGetData Then
                 Dim total = 0D
                 For i As Integer = -1 To e.ListSourceRowIndex - 1
                     total += CDec(view.GetListSourceRowCellValue(i + 1, "Amount"))
                 Next
                 e.Value = total
             End If
      End Sub
    
于 2013-10-19T13:06:56.887 回答