Imports Infragistics.Win
Imports Infragistics.Win.Layout
Imports Infragistics.Win.UltraWinTree
    Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
        '	Get the DataSet
        Dim dataSet As DataSet = Me.GetData()
        '	Set 'AutoGenerateColumnSets' to true so that UltraTreeCOlumnSets are automatically generated
        Me.ultraTree1.ColumnSettings.AutoGenerateColumnSets = True
        '	Set 'SynchronizeCurrencyManager' to false to optimize performance
        Me.ultraTree1.SynchronizeCurrencyManager = False
        '	Set 'ViewStyle' to OutlookExpress for a relational display
        Me.ultraTree1.ViewStyle = ViewStyle.OutlookExpress
        '	Set 'AutoFitColumns' to true to automatically fit all columns
        Me.ultraTree1.ColumnSettings.AutoFitColumns = AutoFitColumns.ResizeAllColumns
        '	Set DataSource/DataMember to bind the UltraTree
        Me.ultraTree1.DataSource = DataSet
        Me.ultraTree1.DataMember = "TVSeries"
    End Sub
    Private Function GetData() As DataSet
        Dim dataSet As DataSet = New DataSet()
        Dim dataTableSeries As DataTable = New DataTable("TVSeries")
        dataTableSeries.Columns.Add("RecordID", GetType(Integer))
        dataTableSeries.Columns.Add("Name", GetType(String))
        dataTableSeries.Columns.Add("Network", GetType(String))
        dataTableSeries.Columns.Add("PilotDate", GetType(DateTime))
        dataTableSeries.Rows.Add(New Object() {0, "Happy Days", "ABC", New DateTime(1974, 1, 15)})
        dataTableSeries.Rows.Add(New Object() {1, "Diff'rent Strokes", "NBC", New DateTime(1978, 11, 3)})
        dataTableSeries.Rows.Add(New Object() {2, "All In The Family", "CBS", New DateTime(1971, 1, 12)})
        Dim dataTableSpinoffs As DataTable = New DataTable("Spinoffs")
        dataTableSpinoffs.Columns.Add("RecordID", GetType(Integer))
        dataTableSpinoffs.Columns.Add("ParentRecordID", GetType(Integer))
        dataTableSpinoffs.Columns.Add("Name", GetType(String))
        dataTableSpinoffs.Columns.Add("Network", GetType(String))
        dataTableSpinoffs.Columns.Add("PilotDate", GetType(DateTime))
        dataTableSpinoffs.Rows.Add(New Object() {3, 0, "Blansky's Beauties", "ABC", New DateTime(1977, 2, 12)})
        dataTableSpinoffs.Rows.Add(New Object() {4, 0, "Mork And Mindy", "ABC", New DateTime(1978, 2, 28)})
        dataTableSpinoffs.Rows.Add(New Object() {5, 0, "Laverne And Shirley", "ABC", New DateTime(1979, 9, 11)})
        dataTableSpinoffs.Rows.Add(New Object() {6, 0, "Joanie Loves Chachi", "ABC", New DateTime(1982, 3, 23)})
        dataTableSpinoffs.Rows.Add(New Object() {7, 1, "Hello, Larry", "NBC", New DateTime(1979, 1, 26)})
        dataTableSpinoffs.Rows.Add(New Object() {8, 1, "The Facts Of Life", "NBC", New DateTime(1979, 8, 24)})
        dataTableSpinoffs.Rows.Add(New Object() {9, 2, "Maude", "CBS", New DateTime(1972, 9, 12)})
        dataTableSpinoffs.Rows.Add(New Object() {10, 2, "The Jeffersons", "CBS", New DateTime(1975, 1, 18)})
        dataTableSpinoffs.Rows.Add(New Object() {11, 10, "Checking In", "CBS", New DateTime(1981, 4, 9)})
        dataTableSpinoffs.Rows.Add(New Object() {12, 9, "Good Times", "CBS", New DateTime(1974, 2, 8)})
        dataSet.Tables.Add(dataTableSeries)
        dataSet.Tables.Add(dataTableSpinoffs)
        dataSet.Relations.Add("SpinoffToSeries", dataTableSeries.Columns("RecordID"), dataTableSpinoffs.Columns("ParentRecordID"), False)
        dataSet.Relations.Add("SpinoffToSpinoff", dataTableSpinoffs.Columns("RecordID"), dataTableSpinoffs.Columns("ParentRecordID"), False)
        Return dataSet
    End Function
    Private Sub ultraTree1_InitializeDataNode(ByVal sender As Object, ByVal e As Infragistics.Win.UltraWinTree.InitializeDataNodeEventArgs) Handles ultraTree1.InitializeDataNode
        '	If the node is being initialized for the first time,
        '	set some appearance properties for root nodes
        If e.Reinitialize = False AndAlso e.Node.Level = 0 Then
            e.Node.Override.NodeAppearance.BackColor = Office2003Colors.ToolbarGradientLight
            e.Node.Override.NodeAppearance.BackColor2 = Office2003Colors.ToolbarGradientDark
            e.Node.Override.NodeAppearance.BackGradientStyle = GradientStyle.Vertical
            e.Node.Override.NodeAppearance.ForeColor = Color.DarkBlue
            e.Node.Override.NodeAppearance.FontData.Bold = DefaultableBoolean.True
        End If
        '	Expand each node as it is initialized
        e.Node.Expanded = True
    End Sub
    Private Sub ultraTree1_ColumnSetGenerated(ByVal sender As Object, ByVal e As Infragistics.Win.UltraWinTree.ColumnSetGeneratedEventArgs) Handles ultraTree1.ColumnSetGenerated
        Dim i As Integer
        For i = 0 To e.ColumnSet.Columns.Count - 1
            Dim column As UltraTreeNodeColumn = e.ColumnSet.Columns(i)
            '	Format the DateTime columns with the current culture's ShortDatePattern
            If column.DataType Is GetType(DateTime) Then
                column.Format = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern
            End If
            '	Hide the integer columns, which represent record IDs
            If (column.DataType Is GetType(Integer)) Then
                column.Visible = False
            End If
            '	Set the MapToColumn for the relationship ColumnSets
            If e.ColumnSet.Key = "SpinoffToSeries" Or e.ColumnSet.Key = "SpinoffToSpinoff" Then
                column.MapToColumn = column.Key
            End If
            '	Set the Text property to something more descriptive
            If column.Key = "Name" Then
                column.Text = "TV Series / Spinoffs"
                '	Make the name column wider
                column.LayoutInfo.PreferredLabelSize = New Size(Me.ultraTree1.Width / 2, 0)
            ElseIf column.Key = "PilotDate" Then
                column.Text = "First Aired"
                '	Center align the text for the first aired date
                column.CellAppearance.TextHAlign = HAlign.Center
            ElseIf column.Key = "Network" Then
                '	Center align the text for the name of the network
                column.CellAppearance.TextHAlign = HAlign.Center
            End If
        Next i
    End Sub