代码之家  ›  专栏  ›  技术社区  ›  Helmbo

如何获得Infragistics Ultrawingrid的时间摘要?

  •  1
  • Helmbo  · 技术社区  · 9 年前

    我有Infragistics UltraWinGrid,其中有一个时间列,小时和分钟。我想总结一下这个专栏,这样我就可以得到旅行的总时间。旅程的每一段都有自己的一排。我尝试过:

    Dim SumTripDuration As SummarySettings = .Summaries.Add(SummaryType.Sum, .Columns("LegDuration"), SummaryPosition.UseSummaryPositionColumn)
    
    SumTripDuration.DisplayFormat = "{0}"
    SumTripDuration.Appearance.TextHAlign = HAlign.Right
    

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

    1 回复  |  直到 3 年前
        1
  •  0
  •   sloth    9 年前

    你没有告诉你的时间栏实际上是什么类型的,但一个通用的解决方案是创建你自己的 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)