2013-06-12 102 views
3

我使用綁定到數據源的DevExpress xtragrid ...一切都很好。我將添加1個未綁定的列(餘額),以保存計算結果。當「借方」和/或「貸方」列在網格中的任何位置發生更改時,「餘額」列必須重新計算。鑑於可能有大量的記錄,我希望循環聲明不會是我唯一的選擇。相反,我希望能使用 表達式編輯器的解決方案。DevExpress - xtragrid列運行總計

例如:

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

回答

4
  1. 在你所謂的數據源金額創建一個新列。在本專欄中,您將存儲的借方和貸方爲正值和負值
  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