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