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 ' Set the root band key so we can easily refer to it later in various ' event handlers. Me.UltraDataSource1.Band.Key = "RootBand" ' Add three columns to the root band. Me.UltraDataSource1.Band.Columns.Add("ID", GetType(Integer)) Me.UltraDataSource1.Band.Columns.Add("Col0", GetType(Integer)) Me.UltraDataSource1.Band.Columns.Add("Col1", GetType(String)) ' Add a child band to the root band. Dim childBand As UltraDataBand = Me.UltraDataSource1.Band.ChildBands.Add("ChildBand") ' Add two columns to the child band. childBand.Columns.Add("ChildCol0", GetType(Double)) childBand.Columns.Add("ChildCol1", GetType(DateTime)) ' Set the count on the root rows collection to 100. Me.UltraDataSource1.Rows.SetCount(100) ' Set the id on the root rows. 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 is fired for every cell. In CellDataRequested event handler ' e.Row property indicates which row and e.Column indicates which column the ' cell data is being requested for. 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 ' If CacheData is set to true, which it is by default, then UltraDataSource ' will cache the provided cell value and won't fire CellDataRequested next ' time for the cell. 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 ' For every parent row, we will have 10 child rows. e.Rows.SetCount(10) End If End Sub