'宣言 Public ReadOnly Property SortedColumns As SortedColumnsCollection
public SortedColumnsCollection SortedColumns {get;}
Imports Infragistics.Shared Imports Infragistics.Win Imports Infragistics.Win.UltraWinGrid Private Sub UltraGrid1_BeforeSortChange(ByVal sender As Object, ByVal e As Infragistics.Win.UltraWinGrid.BeforeSortChangeEventArgs) Handles ultraGrid1.BeforeSortChange ' ユーザーが列によって行を並べ替えるか、列によって行をグループ化するときに ' BeforeSortChange イベントは発生されますユーザーが行を並べ替えるか、グループ化する方法を処理するには、 ' BeforeSortChange イベントを使用できます渡されたイベント引数の SortedColumns パラメーターは ' すべてのグループ化列および並べ替え列 (その順序で) を ' 含みます Dim i As Integer Dim numberOfGroupByColumns As Integer = 0 ' 注: SortedColumnsCollection でグループ化列はグループ化されていない列 ' の前にリストされています(グループ化列はグループ化されていない列の後に ' 追加されたかどうかに関係なし) ' 並べ替えた列コレクションをトラバースすると、グループ化列の数を ' 取得します For i = 0 To e.SortedColumns.Count - 1 If (e.SortedColumns(i).IsGroupByColumn) Then numberOfGroupByColumns += 1 Else Exit For End If Next ' グリッドの変更を実行しないために、イベントをキャンセルします If numberOfGroupByColumns > 2 Then ' 2 つ以下のグループ化列の制限を設定します e.Cancel = True Return End If ' BeforeSortChangeEventArgs イベント引数の ProcessMode プロパティを設定すると、 ' 行の並べ替えおよびフィルタリングは同期に実行するか、非同期に実行するかどうかを指定します ' グリッドのレコードがおおあるで、並べ替えるときに砂時計を ' 表示する場合に便利になりますデフォルトでは、グリッドのバンドが展開されている時に ' そのバンドの行に遅延並べ替えおよび遅延フィルタリングを適用しますProcessMode プロパティが ' Synchronous または SynchronousExpanded に設定された場合に、すべてのバンドの行、 ' またはすべてのバンドの展開された行は同期的に (一度に) 並べ替えてフィルターされることになります ' RowsCollection のオーバーロードされた EnsureSortedAndFiltered メソッドを使用すると、 ' 同期的に並べ替えおよび同期的にフィルタリングを適用するまでのバンド階層のレベル (深さ) を指定できます ' ProcessMode を Lazy に設定すると、グリッドは、バンドが展開されたときに行に ' 遅延並べ替えおよび遅延フィルタリングを適用することを指定しますこれはグリッドのデフォルト動作です e.ProcessMode = ProcessMode.Lazy ' ProcessMode を Synchronous に設定すると、グリッドは、すべてのバンドですべての行に ' 同期的に並べ替えおよびフィルタリングを適用することを指定します e.ProcessMode = ProcessMode.Synchronous ' ProcessMode を SynchronousExpanded に設定すると、グリッドは、すべてのバンドで ' すべての展開された行に同期に並べ替えおよびフィルタリングを適用することを指定します e.ProcessMode = ProcessMode.SynchronousExpanded ' このコードは、並べ替え操作で待機カーソルを表示することを指定し、 ' 砂時計が表示されている間にすべての行がすべてのバンドで並べ替えたことを確認しますカーソルはグリッドの AfterSortChange イベントで ' リセットされます e.ProcessMode = ProcessMode.Synchronous Me.ultraGrid1.Cursor = Cursors.WaitCursor End Sub
using Infragistics.Shared; using Infragistics.Win; using Infragistics.Win.UltraWinGrid; using System.Diagnostics; private void ultraGrid1_BeforeSortChange(object sender, Infragistics.Win.UltraWinGrid.BeforeSortChangeEventArgs e) { // ユーザーが列によって行を並べ替えるか、列によって行をグループ化するときに // BeforeSortChange イベントが発生しますユーザーが行を並べ替えるか、グループ化する方法を処理するには、 // BeforeSortChange イベントを使用できます渡されたイベント引数の SortedColumns パラメーターは // すべてのグループ化列および並べ替え列 (その順序で) を // 含みます int i; int numberOfGroupByColumns = 0; // 注: SortedColumnsCollection でグループ化列はグループ化されていない列 // の前にリストされています(グループ化列がグループ化されていない列の後に // 追加されたかどうかに関係なく) // 並べ替えた列コレクションをトラバースすると、グループ化列の数を // 取得します for ( i = 0; i < e.SortedColumns.Count; i++ ) { if ( e.SortedColumns[ i ].IsGroupByColumn ) numberOfGroupByColumns++; else break; } // グリッドの変更を実行しないために、イベントをキャンセルします if ( numberOfGroupByColumns > 2 ) { // 2 つ以下のグループ化列の制限を設定します e.Cancel = true; return; } // BeforeSortChangeEventArgs イベント引数の ProcessMode プロパティを設定すると、 // 行の並べ替えおよびフィルタリングは同期に実行するか、非同期に実行するかどうかを指定します // グリッドのレコードがおおあるで、並べ替えるときに砂時計を // 表示する場合に便利になりますデフォルトでは、グリッドのバンドが展開されている時に // そのバンドの行に遅延並べ替えおよび遅延フィルタリングを適用しますProcessMode プロパティが // Synchronous または SynchronousExpanded に設定された場合に、すべてのバンドの行、 // またはすべてのバンドの展開された行は同期に (一度に) 並べ替えてフィルターされることになります // RowsCollection のオーバーロードされた EnsureSortedAndFiltered メソッドを使用すると、 // 同期並べ替えおよび同期フィルタリングを適用するまでのバンド階層のレベル (深さ) を指定できます // ProcessMode を Lazy に設定すると、グリッドは、バンドが展開されたときに行に // 遅延並べ替えおよび遅延フィルタリングを適用することを指定しますこれはグリッドのデフォルト動作です e.ProcessMode = ProcessMode.Lazy; // ProcessMode を Synchronous に設定すると、グリッドは、すべてのバンドですべての行に // 同期に並べ替えおよびフィルタリングを適用することを指定します e.ProcessMode = ProcessMode.Synchronous; // ProcessMode を SynchronousExpanded に設定すると、グリッドは、すべてのバンドで // すべての展開された行に同期に並べ替えおよびフィルタリングを適用することを指定します e.ProcessMode = ProcessMode.SynchronousExpanded; // このコードは、並べ替え操作で砂時計を表示することを指定し、 // 砂時計が表示されているときに、すべてのバンドですべての行が並べ替えたことを確認しますカーソルはグリッドの AfterSortChange イベントで // リセットされます e.ProcessMode = ProcessMode.Synchronous; this.ultraGrid1.Cursor = Cursors.WaitCursor; }