Моя первая попытка использования инфраструктуры управления деревьями. У меня есть хранимая процедура, которая возвращает 4 столбца. Я полагаю, что родительские / дочерние отношения получают меня, когда из хранимой процедуры возвращается только набор результатов. Столбцы: Area, REQ, UserID, Picks. Столбцы area и REQ могут возвращаться более чем в одну строку. Пример данных может выглядеть следующим образом.
Я пытаюсь заставить первый дисплей UltraTree показывать по одной строке для Area и REQ. Если в области было более одного пользователя, то рядом с областью сохранения будет знак «+», который можно расширить. Это проблема, с которой я столкнулся. Элемент управления показывает все строки. Я помещаю образец кода ниже. Может ли кто-нибудь указать мне правильный путь к выполнению sh this.
Imports System.Data.SqlClient
Imports Infragistics.Win.UltraWinTree
Imports Infragistics.Win
Public Class Form1
Private ds As New DataSet
Private dt As New DataTable
Private da As New SqlDataAdapter
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim dt As Date = "01/16/2020"
Dim cmd As New SqlCommand
Using sqlcon As New SqlConnection("User ID=beans;password=garbanzo;Initial Catalog=mydata;Data Source=myDatabase")
Try
sqlcon.Open()
Catch ex As Exception
End Try
With cmd
.Connection = sqlcon
.CommandType = CommandType.StoredProcedure
.CommandText = "prdatarpt.spPicksByUserInArea"
.Parameters.Clear()
.Parameters.AddWithValue("@DelDate", dt)
da.SelectCommand = cmd
da.Fill(ds, "Areas")
End With
End Using
Try
GetData()
With Me.UT1
.ViewStyle = UltraWinTree.ViewStyle.Default
' .ViewStyle = UltraWinTree.ViewStyle.Grid
.ColumnSettings.AutoFitColumns = AutoFitColumns.ResizeAllColumns
.ColumnSettings.ShowBandNodes = ShowBandNodes.OnlyForSiblingBands
.SetDataBinding(ds, "Areas")
End With
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Private Function GetData() As Integer
Dim theProject As DataTable = ds.Tables.Add("Pickareas")
theProject.Columns.Add("Area", GetType(String))
theProject.Columns.Add("REQ", GetType(Integer))
theProject.Columns.Add("User", GetType(String))
theProject.Columns.Add("Picks", GetType(Integer))
theProject.Rows.Add(New Object())
Dim theUsers As DataTable = ds.Tables.Add("Users")
theUsers.Columns.Add("Area", GetType(String))
theUsers.Columns.Add("USer", GetType(String))
theUsers.Columns.Add("Pick", GetType(Integer))
End Function
Private Sub ultraTree1_ColumnSetGenerated(ByVal sender As Object, ByVal e As Infragistics.Win.UltraWinTree.ColumnSetGeneratedEventArgs) Handles UT1.ColumnSetGenerated
If e.ColumnSet.Key = "Areas" Then
e.ColumnSet.NodeTextColumn = e.ColumnSet.Columns("UserID")
End If
If e.ColumnSet.Key = "Area" Then
For Each _col As UltraWinTree.UltraTreeNodeColumn In e.ColumnSet.Columns
_col.Visible = False
Next
e.ColumnSet.Columns("Area").Visible = True
e.ColumnSet.Columns("REQ").Visible = True
e.ColumnSet.NodeTextColumn = e.ColumnSet.Columns("UserID")
End If
End Sub
Private Sub UT1_InitializeDataNode(ByVal sender As Object, ByVal e As Infragistics.Win.UltraWinTree.InitializeDataNodeEventArgs) Handles UT1.InitializeDataNode
If e.Node.Parent Is Nothing Then
e.Node.Expanded = True
End If
End Sub
Private Sub uT1_AfterDataNodesCollectionPopulated(ByVal sender As Object, ByVal e As Infragistics.Win.UltraWinTree.AfterDataNodesCollectionPopulatedEventArgs) Handles UT1.AfterDataNodesCollectionPopulated
Dim column As UltraTreeNodeColumn
For Each column In e.Nodes.ColumnSetResolved.Columns
column.PerformAutoResize()
Next
End Sub
End Class