オブジェクトの Band プロパティは、UltraGridBand オブジェクトによって定義されたグリッドの特定のバンドを参照します。Band プロパティを使用して、特定の UltraGridBand オブジェクトのプロパティにアクセスしたり、現在のオブジェクトに関連付けられている UltraGridBand オブジェクトへの参照を取得したりできます。
UltraGridBand オブジェクトは、UltraWinGrid によって使用される階層データ構造の基礎になります。グリッドの行またはセルは、UltraGridBand オブジェクトからアクセスする必要があります。バンドは、バンドを構成する行に統一した書式と動作を適用するときにも使用します。UltraGridBand オブジェクトは、データ階層の単一のレベルからすべてのデータを表示するために使用します。UltraGridBand オブジェクトは、レコードセットのデータを実際に表示する子の UltraGridRow オブジェクトのセットを複数含むことができます。DataEnvironment 内の単一の Command から描画されるすべての行がバンドを構成します。
データ階層の構造を介して現在のバンド内の行にリンクする以降のバンドから行を表示するために、バンドの行は通常ひとつ以上のグループで表示されます。たとえば、階層レコードセットに顧客、発注、発注詳細の各データを表示するテーブルがあるとすると、これらの Commands のそれぞれが UltraWinGrid の UltraGridBand にマップされます。顧客バンドの行は、その顧客の発注データ行とは独立して表示されます。同様に、発注バンドの行は、発注詳細の行の表示領域を空けておくため、独立して表示されます。これがどのように見えるかはグリッドで選択した ViewStyle 設定によって異なりますが、視覚的な区別の概念は、UltraWinGrid が階層的なレコードセットで使用される場合に簡単に分かります。
バンドの行が独立して表示されていても、それらは連続的に処理されます。バンドから1列を選択すると、その列のセルは、間に挟まった行の存在にかかわらず、バンドのすべての行にわたって選択されます。また、階層表示を縮小して、現在のバンドの子の行を非表示にすることもできます。
Imports Infragistics.Shared Imports Infragistics.Win Imports Infragistics.Win.UltraWinGrid Private Sub Button40_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles button40.Click Dim rowsCount As Integer = 0 Dim groupByRowsCount As Integer = 0 ' Call the helper method which is a recursive implmentation for traversing rows. MessageBox.Show("Please wait. This operation may take a while depending on number of rows.") Me.TraverseAllRowsHelper(Me.ultraGrid1.Rows, rowsCount, groupByRowsCount) ' Show a dialog showing the number of regular rows and number of group-by rows. MessageBox.Show("The UltraGrid has " & rowsCount & " number of regular rows, and " & groupByRowsCount & " number of group-by rows.") End Sub Private Sub TraverseAllRowsHelper(ByVal rows As RowsCollection, ByRef rowsCount As Integer, ByRef groupByRowsCount As Integer) ' Loop through every row in the passed in rows collection. Dim row As UltraGridRow = Nothing For Each row In rows ' If you are using Outlook GroupBy feature and have grouped rows by columns in the ' UltraGrid, then rows collection can contain group-by rows or regular rows. So you ' may need to have code to handle group-by rows as well. If TypeOf row Is UltraGridGroupByRow Then Dim groupByRow As UltraGridGroupByRow = DirectCast(row, UltraGridGroupByRow) ' Incremement the group-by row count. groupByRowsCount += 1 Else ' Incremenent the regular row count. rowsCount += 1 End If ' If the row has any child rows. Typically, there is only a single child band. However, ' there will be multiple child bands if the band associated with row1 has mupliple child ' bands. This would be the case for exmple when you have a database hierarchy in which a ' table has multiple child tables. If Not Nothing Is row.ChildBands Then ' Loop throgh each of the child bands. Dim childBand As UltraGridChildBand = Nothing For Each childBand In row.ChildBands ' Call this method recursivedly for each child rows collection. Me.TraverseAllRowsHelper(childBand.Rows, rowsCount, groupByRowsCount) Next End If Next End Sub
using Infragistics.Shared; using Infragistics.Win; using Infragistics.Win.UltraWinGrid; using System.Diagnostics; private void button40_Click(object sender, System.EventArgs e) { int rowsCount = 0; int groupByRowsCount = 0; // Call the helper method which is a recursive implmentation for traversing rows. MessageBox.Show( "Please wait. This operation may take a while depending on number of rows." ); this.TraverseAllRowsHelper( this.ultraGrid1.Rows, ref rowsCount, ref groupByRowsCount ); // Show a dialog showing the number of regular rows and number of group-by rows. MessageBox.Show( "The UltraGrid has " + rowsCount + " number of regular rows, and " + groupByRowsCount + " number of group-by rows." ); } private void TraverseAllRowsHelper( RowsCollection rows, ref int rowsCount, ref int groupByRowsCount ) { // Loop through every row in the passed in rows collection. foreach ( UltraGridRow row in rows ) { // If you are using Outlook GroupBy feature and have grouped rows by columns in the // UltraGrid, then rows collection can contain group-by rows or regular rows. So you // may need to have code to handle group-by rows as well. if ( row is UltraGridGroupByRow ) { UltraGridGroupByRow groupByRow = (UltraGridGroupByRow)row; // Incremement the group-by row count. groupByRowsCount++; } else { // Incremenent the regular row count. rowsCount++; } // If the row has any child rows. Typically, there is only a single child band. However, // there will be multiple child bands if the band associated with row1 has mupliple child // bands. This would be the case for exmple when you have a database hierarchy in which a // table has multiple child tables. if ( null != row.ChildBands ) { // Loop throgh each of the child bands. foreach ( UltraGridChildBand childBand in row.ChildBands ) { // Call this method recursivedly for each child rows collection. this.TraverseAllRowsHelper( childBand.Rows, ref rowsCount, ref groupByRowsCount ); } } } }