你没有告诉你的时间栏实际上是什么类型的,但一个通用的解决方案是创建你自己的
ICustomSummaryCalculator
它可以处理您的数据。
文档提供了
example implementation
,但这里有一个
TimeSpan
列:
Class TimeSummary
Implements ICustomSummaryCalculator
Dim _totals As New TimeSpan(0)
Dim _columnname As String
Public Sub New(columnName As String)
_columnname = columnName
End Sub
Public Sub BeginCustomSummary(summarySettings As SummarySettings, rows As RowsCollection) Implements ICustomSummaryCalculator.BeginCustomSummary
_totals = New TimeSpan(0)
End Sub
Public Sub AggregateCustomSummary(summarySettings As SummarySettings, row As UltraGridRow) Implements ICustomSummaryCalculator.AggregateCustomSummary
Dim time = row.GetCellValue(summarySettings.SourceColumn.Band.Columns(_columnname))
If TypeOf time Is DBNull Then
Return
End If
_totals += TimeSpan.Parse(time.ToString())
End Sub
Public Function EndCustomSummary(summarySettings As SummarySettings, rows As RowsCollection) Implements ICustomSummaryCalculator.EndCustomSummary
Return _totals
End Function
End Class
这样使用:
Dim timecolumn = grid.DisplayLayout.Bands(0).Columns("Time")
grid.DisplayLayout.Bands(0).Summaries.Add(SummaryType.Custom, New TimeSummary(timecolumn.Key), timecolumn, SummaryPosition.UseSummaryPositionColumn, timecolumn)