【问题标题】:how to remove duplicate nodes from treeview and merge its item to remaining treeNode (VB.net / C#)如何从树视图中删除重复节点并将其项目合并到剩余的树节点(VB.net / C#)
【发布时间】:2014-06-12 07:36:21
【问题描述】:

我想从树视图中删除重复的节点并将其数据合并到剩余的 TreeNode 中。 我正在创建一个windows应用程序,所有组件都是服务器端组件

Dim ParentTable As DataTable
     ParentTable = ds.Tables(0)
     Dim parentnode As TreeNode
        parentnode = New TreeNode("Tasks")
                    TreeView1.Nodes.Add(parentnode)
                    Dim MyTasks, Projects, Personal, Team As TreeNode
                    MyTasks = parentnode.Nodes.Add("My Tasks")
                    Projects = parentnode.Nodes.Add("Projects")
                    Personal = parentnode.Nodes.Add("Personal")
                    Team = parentnode.Nodes.Add("Team")
                    Dim Subparentnode As TreeNode
                    Dim childrow As DataRow
                    Dim childnode As TreeNode

                    For Each parentrow In ParentTable.Rows
                        Subparentnode = New TreeNode(parentrow.Item(12))
                        MyTasks.Nodes.Add(Subparentnode)
                        childnode = New TreeNode()
                    Next

                For Each parentrow In ParentTable.Rows
                    If (parentrow.Item(3) = 0 And parentrow.Item(4) = 0) Then
                        Subparentnode = New TreeNode(parentrow.Item(12))
                        Personal.Nodes.Add(Subparentnode)
                    End If


                    If Not (parentrow.Item(3) = 0 And parentrow.Item(4) = 0) Then
                        If Not (parentrow.Item(11) = "") Then
                            Dim isNotExists As Boolean
                            Dim node As New TreeNode
                            Dim SubparentnodeProjectName As TreeNode
                            SubparentnodeProjectName = New TreeNode(parentrow.Item(11))
                                                                                            Projects.Nodes.Add(SubparentnodeProjectName)
                                Subparentnode = New TreeNode(parentrow.Item(12))
                                SubparentnodeProjectName.Nodes.Add(Subparentnode)

                        End If
                    End If

            If (parentrow.Item(3) = 0 And Not parentrow.Item(4) = 0) Then
                Dim SubparentnodeProjectName As TreeNode
                SubparentnodeProjectName = New TreeNode(parentrow.Item(17))
                Team.Nodes.Add(SubparentnodeProjectName)
                Subparentnode = New TreeNode(parentrow.Item(12))
                SubparentnodeProjectName.Nodes.Add(Subparentnode)

            End If
                Next
            End If

c#代码也可以

我现在删除了重复节点,但无法合并重复节点的子节点。有谁能够帮我 !

请提供一些代码

非常感谢任何帮助

谢谢你

Udit Bhardwaj

【问题讨论】:

  • 你使用的是 MVVM 还是 code behind?
  • @pushpraj 我正在使用核心 VB
  • 比较的深度是多少? 1级2级?或者只是在给定的水平?
  • 只根据给定的等级

标签: c# vb.net winforms treeview


【解决方案1】:

根据描述和 cmets,我可以提出一种方法来查找是否存在现有节点,如果没有,则创建一个新节点。

Function GetOrCreateTreeNode(root As TreeNode, newNodeName As String) As TreeNode
    For Each node As TreeNode In root.Nodes
        If node.Test = newNodeName Then
            Return node
        End If
    Next
    Dim newNode As TreeNode = New TreeNode(newNodeName)
    root.Nodes.Add(newNode)
    Return newNode
End Function

用法示例如下

        If (parentrow.Item(3) = 0 And Not parentrow.Item(4) = 0) Then
            Dim SubparentnodeProjectName As TreeNode
            'use the method to find existing node of the given name or create a new one if does not exists'
            SubparentnodeProjectName = GetOrCreateTreeNode(Team.LastNode, parentrow.Item(17))
            Subparentnode = New TreeNode(parentrow.Item(12))
            SubparentnodeProjectName.Nodes.Add(Subparentnode)
        End If

我假设上述方法是添加团队节点,您可以将其用于项目。

【讨论】:

  • 请大家帮忙,让我试试这个...感谢您的宝贵时间
  • 它不工作,试图根据我的需要使它更正确,它没有删除重复的节点。
  • 由于我无法使用您的数据进行测试,因此我仅使用字符串值进行了测试。样品只是为了满足您的需求。我相信这至少是您解决重复问题的一个开始。
  • 用文字代替名字,我贴错了。为同样的道歉。
  • 该函数将返回现有节点,因此如果将子节点添加到它应该将它们合并为一个。顺便说一句,在您删除为其添加子节点的重复项之后?您可以将它们添加到上一个。或者您可以将删除的重复节点中的所有节点添加到您保留的节点中。您是否可以分享一个工作示例代码以获得更好的可见性。
猜你喜欢
  • 2021-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-15
  • 1970-01-01
  • 1970-01-01
  • 2018-07-07
  • 1970-01-01
相关资源
最近更新 更多