如何在 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)
我有 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)