如何在 Infragistics Ultrawingrid 中获取时间摘要?

How do I get a summary of time in Infragistics Ultrawingrid?

我有 Infragistics UltraWinGrid,其中有时间列、小时和分钟。我想汇总列,以便我可以得到旅行的总时间。行程的每一段都有自己的行。我试过:

Dim SumTripDuration As SummarySettings = .Summaries.Add(SummaryType.Sum, .Columns("LegDuration"), SummaryPosition.UseSummaryPositionColumn)

SumTripDuration.DisplayFormat = "{0}"
SumTripDuration.Appearance.TextHAlign = HAlign.Right

这不起作用,因为摘要行需要使用整数。任何帮助将不胜感激。

您没有说出时间列的实际类型,但一般的解决方案是创建您自己的 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)