Help with Parent Child in Tree ListView?

Smokeywade

Member
Joined
Sep 11, 2007
Messages
22
Programming Experience
3-5
My data is populating incorrectly like this in my treelist view
+ parent1
---- child1a
---- child1b
---- child2a
---- child2c
---- child3a
---- child3b
+ parent2
---- child1a
---- child1b
---- child2a
---- child2c
---- child3a
---- child3b
+ parent3
---- child1a
---- child1b
---- child2a
---- child2c
---- child3a
---- child3b

I'm trying to get it to load like this
+ parent1
---- child1a
---- child1b
+ parent2
---- child2a
---- child2c
+ parent3
---- child3a
---- child3b

I'm not sure of how to tell it to place each record in correctly by id - in the past I've used Datagrid with datarelations but I'm not sure if I can do this with a treelist view...
Here is my code:
VB.NET:
Expand Collapse Copy
Dim MyDataSet3 As New DataSet
            Dim command1 As New SqlCommand("Select *, Order_no as [openDays], Order_no as [lateDays] from LateOrders_Header_view", cnn1)
            'Dim command2 As New SqlCommand("Select * from LateOrders_Line_view, LateOrders_Header_view where LateOrders_line_view.Order_no = LateOrders_header_view.Order_no", cnn1)
            Dim command2 As New SqlCommand("Select LateOrders_line_view.item_id, LateOrders_line_view.purchase_class from LateOrders_Line_view, lateOrders_header_view where LateOrders_line_view.Order_no = LateOrders_header_view.Order_no", cnn1)
            Try
                cnn1.Open()

                'Debug.WriteLine(cnn1.ConnectionString)
                Dim DirAdapter As New SqlDataAdapter(command1)
                Dim DirAdapter2 As New SqlDataAdapter(command2)

                MyDataSet3 = New DataSet

                DirAdapter.Fill(MyDataSet3, "LateOrders_Header_view")
                DirAdapter2.Fill(MyDataSet3, "LateOrders_Line_view")


                Dim prow As DataRow
                Dim chrow As DataRow

                treeListView1.Update()
                treeListView1.Items.Clear()
                For Each prow In MyDataSet3.Tables("LateOrders_Header_view").Rows
                    Dim item As New TreeListNode '= New TreeListNode
                    item.SubItems.Add(prow("order_no").ToString)
                    item.SubItems.Add(prow("name").ToString)
                    item.SubItems.Add(prow("order_date").ToString)
                    item.SubItems.Add(prow("requested_date").ToString)
                    item.SubItems.Add(prow("reason").ToString)
                    item.SubItems.Add(prow("status").ToString)
                    item.SubItems.Add(prow("duedate").ToString)
                    item.SubItems.Add(prow("openDays").ToString)
                    item.SubItems.Add(prow("lateDays").ToString)
                    For Each chrow In MyDataSet3.Tables("LateOrders_Line_view").Rows
                        Dim chitem As New TreeListNode '= New TreeListView
                        ' chitem.SubItems.Add(chrow("order_no").ToString)
                        'chitem.SubItems.Add(chrow("name").ToString)
                        'chitem.SubItems.Add(chrow("Order_date").ToString)
                        'chitem.SubItems.Add(chrow("requested_date").ToString)
                        chitem.SubItems.Add(chrow("item_id").ToString)
                        chitem.SubItems.Add(chrow("purchase_class").ToString)
                       
                        item.Nodes.Add(chitem)
                    Next
                    item.Expand()
                    treeListView1.Nodes.Add(item)
                Next

Thanks For Any Help
 
Finally Figured this out -- Not to complicated

First I had to make sure I selected what I was using as a key so
VB.NET:
Expand Collapse Copy
Dim command1 As New SqlCommand("Select *, Order_no as [openDays], Order_no as [lateDays] from LateOrders_Header_view", cnn1)
Dim command2 As New SqlCommand("Select LateOrders_line_view.Order_no, LateOrders_line_view.item_id, LateOrders_line_view.purchase_class from LateOrders_Line_view, lateOrders_header_view where LateOrders_line_view.Order_no = LateOrders_header_view.Order_no", cnn1)

Then Create two data tables then combine them to two datacolumns then create a datarelation between the two like
VB.NET:
Expand Collapse Copy
     Dim dt As DataTable = MyDataSet3.Tables("LateOrders_Header_view")
                Dim dt2 As DataTable = MyDataSet3.Tables("LateOrders_Line_view")
                Dim pc As DataColumn = dt.Columns("order_no")
                Dim cc As DataColumn = dt2.Columns("order_no")
                Dim datarelation = New DataRelation("ParentChild", pc, cc)
                MyDataSet3.Relations.Add(datarelation)

Then populate my parentrow and my child row - inbetween all of this I created a parentchildrow array and told the program parentrow is master get the child row from the datarelation like this

VB.NET:
Expand Collapse Copy
Dim prow As DataRow
                Dim chrow As DataRow

                treeListView1.Update()
                treeListView1.Items.Clear()
                For Each prow In MyDataSet3.Tables("LateOrders_Header_view").Rows
                    Dim item = New TreeListNode '= New TreeListNode
                    item.SubItems.Add(prow("order_no").ToString)
                    item.SubItems.Add(prow("name").ToString)
                    item.SubItems.Add(prow("order_date").ToString)
                    item.SubItems.Add(prow("requested_date").ToString)
                    item.SubItems.Add(prow("reason").ToString)
                    item.SubItems.Add(prow("status").ToString)
                    item.SubItems.Add(prow("duedate").ToString)
                    item.SubItems.Add(prow("openDays").ToString)
                    item.SubItems.Add(prow("lateDays").ToString)
                    ' item.SubItems.Add("")
                    Dim parchrow() As DataRow = prow.GetChildRows(datarelation)
                    For Each chrow In parchrow      'MyDataSet3.Tables("LateOrders_Line_view").Rows
                        Dim chitem = New TreeListNode   '= New TreeListView
                        chitem.SubItems.Add(chrow("item_id").ToString)
                        chitem.SubItems.Add(chrow("purchase_class").ToString)
                        item.Nodes.Add(chitem)
                    Next
                    item.Expand()
                    treeListView1.Nodes.Add(item)
                Next

This can easily be changed from
VB.NET:
Expand Collapse Copy
                    Dim parchrow() As DataRow = prow.GetChildRows(datarelation)
to
VB.NET:
Expand Collapse Copy
                    Dim parchrow = prow.GetChildRows(datarelation)

Well thanks...I'm going to continue learning this Parent child thing...If anyone see any problems with the way I did this above please let me know...

Thanks...
 
Back
Top