Imports Infragistics.Shared
Imports Infragistics.Win
Imports Infragistics.Win.UltraWinGrid
Public Class MyGroupByEvaluator
Implements Infragistics.Win.UltraWinGrid.IGroupByEvaluator
Private Function GetGroupByValue(ByVal groupbyRow As UltraGridGroupByRow, ByVal row As UltraGridRow) As Object Implements IGroupByEvaluator.GetGroupByValue
Dim val As String
' Get the default value from the groupbyRow.
If groupbyRow.Value Is Nothing Then
val = ""
Else
val = groupbyRow.Value.ToString()
End If
' If it is longer than 2 characters truncate it.
If val.Length > 2 Then
val = val.Substring(0, 2)
End If
' Convert the string to uppercase for display in the group-by row's description.
Return val.ToUpper()
End Function
Private Function DoesGroupContainRow(ByVal groupbyRow As UltraGridGroupByRow, ByVal row As UltraGridRow) As Boolean Implements IGroupByEvaluator.DoesGroupContainRow
' Get the related cell's value as a string.
Dim cellValue As String = row.Cells(groupbyRow.Column).Value.ToString()
' If it is longer than 2 characters truncate it.
If cellValue.Length > 2 Then
cellValue = cellValue.Substring(0, 2)
End If
' Do a case insensitive compare.
Return 0 = String.Compare(groupbyRow.Value.ToString(), cellValue, True)
End Function
End Class
Private Sub Button35_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles button35.Click
' Set the view style to OutlookGroupBy to enable the outlook-group-by feature.
Me.UltraGrid1.DisplayLayout.ViewStyleBand = ViewStyleBand.OutlookGroupBy
' Get the CompanyName column.
Dim column As UltraGridColumn = Me.UltraGrid1.DisplayLayout.Bands(0).Columns("CompanyName")
' Set the GroupByEvaluator on the column to an instance of MyGroupByEvaluator.
column.GroupByEvaluator = New MyGroupByEvaluator()
' Set the column's HiddenWhenGroupBy property to false since we are
' grouping by the 1st 2 characters of each string we want the full
' company name to show in each row.
column.HiddenWhenGroupBy = DefaultableBoolean.False
' Now group the rows by the column.
Me.UltraGrid1.DisplayLayout.Bands(0).SortedColumns.Add(column, False, True)
End Sub