2013-05-15 46 views
0

这是干洗POS系统的应用程序。在预订表单中是包含项目按钮和树视图的组框,其中所有的订单都被放入并且采用这种格式。vb.net中Treeview控件绑定

2x Trouser (node)     20 (Price) 

    Blue (Sub node) 
    Cotton (Subnode) 

1x Shirt  (node)    30 (Price) 

    Black (Sub node) 
    Linen (Sub node) 

2x Shorts  (node)    30 (Price) 

    Black (Sub node) 
    Linen (Sub node) 
    Press only(Sub node)   -15 (half of 30) 

上述项目是按钮分组在组框中。有按衣服,颜色,材料和额外的百分比基于清洁量的百分比,如按仅,重新清洁等。

当我点击某个特定群组中的按钮(比如衣服或服装)时,项目被扔到树视图中,它的组消失,并且显示下一个组(颜色),并且这一直持续到最后一个阶段是Extra,然后我单击下一个项目按钮开始输入另一个衣服。这我可以做,但这是我的问题。

  1. 我不知道如何添加量数据在树视图 节点项目旁边(你可以看到这是裤子的第一个节点旁边都有一个数字,2,这个数字意味着站在旁边的树视图左侧的节点项目(衣服),但不是作为一个节点或子节点项目

  2. 我不知道如何添加在TreeView 节点项目相对价格的数字(如您可以看到价格不是节点,也不是子节点物品,它们旨在分别站在树形视图的最右侧

  3. 我不知道如何将这些项目(节点和子节点)中的每一个绑定到数据库表中的列。

回答

0

如果我解释了你正在做的事情,你将无法将任何东西绑定到Treeview控件。您将需要创建循环遍历数据并相应添加节点到树视图的过程。我在下面添加了一些粗略的代码,可以帮助你。

在过去,我已经做了两遍。第一遍拉和创建一个数据表或读者只有顶级节点,在你的案例裤,衬衫和短裤。循环访问该组数据并将节点添加到TreeView。

Private Sub RefreshTopNodes() 
     Dim dt As DataTable = TopNodes() 
     For I As Integer = 0 To dt.Rows.Count - 1 
      AddRootNode(dt.Rows(I).Item(0).ToString, dt.Rows(I).Item(1).ToString, dt.Rows(I).Item(2).ToString) 
     Next 
End Sub 

Private Sub AddRootNode(NodeID As String, NodeDesc As String, Price As Integer) 
     If NodeID = "ROOT" Then Exit Sub 
     Dim tn As TreeNode = TreeQs.Nodes.Add(NodeID, NodeDesc & " (" & Price.ToString & ")", 0) 
     tn.Tag = NodeID 
End Sub 

第二遍将拉和创建子节点的数据表或读取器。循环遍历该集合将子节点添加到适当的父节点。

Private Sub RefreshSubNodes() 
     Dim dt As DataTable = SubNodes() 
     For I As Integer = 0 To dt.Rows.Count - 1 
      AddSubNode(dt.Rows(I).Item(0).ToString, dt.Rows(I).Item(1).ToString, dt.Rows(I).Item(2).ToString, dt.Rows(I).Item(3).ToString) 
     Next 
    Catch ex As Exception 
     ErrorHandler("frmADCMainPA.RefreshSubNodes", ex.ToString) 
    End Try 
End Sub 

Private Sub AddSubNode(ParentNodeID As String, SubNodeID As String, SubNodeDesc As String, Price As Integer) 
     Dim tn As TreeNode = TreeQs.Nodes(ParentNodeID).Nodes.Add(ParentNodeID & "-" & SubNodeID, SubNodeDesc & " (" & Price.ToString & ")") 
     tn.Tag = ParentNodeID & ";" & SubNodeID 
End Sub 

我认为您可以通过这两种方式来完成数量。 1.在循环访问子节点时计数,然后返回到父节点并编辑节点的文本以显示数量。 2.将子节点计数附加到父节点查询,并在添加节点时添加到数量。

从你给这些信息是我的建议。