Imports Infragistics.Win.UltraWinDataSource Imports Infragistics.Win.UltraWinGrid Private Sub Load_Data_on_Demand_Load(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles MyBase.Load Me.UltraGrid1.DataSource = Me.UltraDataSource1 ' 後でさまざまなイベント ハンドラ内で参照できるように、ルート バンド キー ' を設定します。 Me.UltraDataSource1.Band.Key = "RootBand" ' 3 つの列をルート バンドに追加します。 Me.UltraDataSource1.Band.Columns.Add("ID", GetType(Integer)) Me.UltraDataSource1.Band.Columns.Add("Col0", GetType(Integer)) Me.UltraDataSource1.Band.Columns.Add("Col1", GetType(String)) ' 子バンドをルート バンドに追加します。 Dim childBand As UltraDataBand = Me.UltraDataSource1.Band.ChildBands.Add("ChildBand") ' 2 つの列を子バンドに追加します。 childBand.Columns.Add("ChildCol0", GetType(Double)) childBand.Columns.Add("ChildCol1", GetType(DateTime)) ' ルート行コレクションのカウントを 100 に設定します。 Me.UltraDataSource1.Rows.SetCount(100) ' ルート行に ID を設定します。 Dim column As UltraDataColumn = Me.UltraDataSource1.Band.Columns("ID") Dim i As Integer For i = 0 To Me.UltraDataSource1.Rows.Count - 1 Me.UltraDataSource1.Rows(i)(column) = i Next End Sub Dim random As Random = New Random() Private Sub UltraDataSource1_CellDataRequested(ByVal sender As Object, _ ByVal e As Infragistics.Win.UltraWinDataSource.CellDataRequestedEventArgs) _ Handles UltraDataSource1.CellDataRequested ' CellDataRequested はセルごとに発生します。CellDataRequested イベント ハンドラ内では、 ' e.Row プロパティはセルデータが要求された行を示し、e.Column は ' セル データが要求された列を示します。 Dim row As UltraDataRow = e.Row If "RootBand" Is e.Column.Band.Key Then Select Case e.Column.Key Case "Col0" e.Data = Me.random.Next() Case "Col1" e.Data = "String " & Me.random.Next() End Select ElseIf "ChildBand" Is e.Column.Band.Key Then Select Case e.Column.Key Case "ChildCol0" e.Data = Me.random.NextDouble() Case "ChildCol1" e.Data = DateTime.Now.AddDays(Me.random.Next(1000)) End Select End If ' CacheData が True(デフォルト)に設定されている場合、UltraDataSource は ' 提供されたセル値をキャッシュします。したがって、次回同じセルに対して CellDataRequested ' は発生しません。 e.CacheData = True End Sub Private Sub UltraDataSource1_InitializeRowsCollection(ByVal sender As Object, _ ByVal e As Infragistics.Win.UltraWinDataSource.InitializeRowsCollectionEventArgs) _ Handles UltraDataSource1.InitializeRowsCollection If "ChildBand" Is e.Rows.Band.Key Then ' 親行あたりの子行の数を 10 行にします。 e.Rows.SetCount(10) End If End Sub