2015-03-02 66 views
1

我有一個infragistics ultrawingrid,我有一個時間列,小時和分鐘。我想總結一下專欄,以便我可以得到旅行的總時間。旅行的每一段都有自己的一排。我努力了;如何獲得Infragistics Ultrawingrid的時間彙總?

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


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

這不起作用,因爲彙總行需要使用整數。任何幫助將不勝感激。

回答

0

您沒有告訴您的時間列的實際類型是什麼,但一般的解決方案是創建您自己的可處理您的數據的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) 
+0

時間列來自數據庫的時間(7)數據類型。 – Helmbo 2015-03-03 15:47:29

+0

@Helmbo我已經添加了一個如何處理TimeSpans的例子 – sloth 2015-03-03 16:24:39