'宣言 Public ReadOnly Property Column As UltraGridColumn
public UltraGridColumn Column {get;}
Band が GroupBy モードの場合、データはデータ フィールドに基づきグループ化され、これはグリッドの列に対応します。グループを作るには、ユーザーは列ヘッダーを Band の GroupByBox にドラッグすることができ、その列で見つかる値に基づいてグループ化されます。
GroupByRow の Column プロパティは、現在の GroupBy Row のグループを作成するために使用される列を指定します。
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
using Infragistics.Shared; using Infragistics.Win; using Infragistics.Win.UltraWinGrid; using System.Diagnostics; public class MyGroupByEvaluator : Infragistics.Win.UltraWinGrid.IGroupByEvaluator { public object GetGroupByValue( UltraGridGroupByRow groupbyRow, UltraGridRow row ) { string val; // Get the default value from the groupbyRow. if (groupbyRow.Value == null ) val = ""; else val = groupbyRow.Value.ToString(); // If it is longer than 2 characters truncate it. if ( val.Length > 2 ) val = val.Substring( 0, 2 ); // Convert the string to uppercase for display in the group-by row's description. return val.ToUpper(); } public bool DoesGroupContainRow( UltraGridGroupByRow groupbyRow, UltraGridRow row ) { // Get the related cell's value as a string. string cellValue = row.Cells[groupbyRow.Column].Value.ToString(); // If it is longer than 2 characters truncate it. if ( cellValue.Length > 2 ) cellValue = cellValue.Substring(0, 2); // Do a case insensitive compare. return 0 == string.Compare(groupbyRow.Value.ToString(), cellValue, true); } } private void button35_Click(object sender, System.EventArgs e) { // Set the view style to OutlookGroupBy to enable the outlook-group-by feature. this.ultraGrid1.DisplayLayout.ViewStyleBand = ViewStyleBand.OutlookGroupBy; // Get the CompanyName column. UltraGridColumn column = this.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. this.ultraGrid1.DisplayLayout.Bands[0].SortedColumns.Add( column, false, true ); }