2012-08-14 71 views
2

我试图从dataTable中添加节点到树形视图中。我的问题不是添加节点,而是显示它们。我的循环遍历并添加每个节点。我有一个正确显示总节点的文本框。然而,树视图什么也不显示。我是否缺少一些显示属性?Treeview - Treenode - VB.Net - Not Displaying Nodes

谢谢你的帮助!

oldComments.DataBind() 
    Dim count As Integer = 0 
    Dim TreeView1 As TreeView = New TreeView 
    ' TreeView1.FindNode("My Node").ChildNodes().Add(New TreeNode("Test This")) 
    For Each row As DataRow In dsData.Rows 
     Dim node As TreeNode = New TreeNode(row("UpdateTimeStamp").ToString) 

     Dim node2 As TreeNode = New TreeNode((count.ToString + " - Count"), "test") 
     TreeView1.Nodes.Add(node2) 
     TreeView1.Nodes.Add(node) 
     TreeView1.Nodes(0).ChildNodes().Add(node) 
    Next 
    TreeView1.ExpandAll() 
    status.Text = TreeView1.Nodes.Count 

然后ASP:

<asp:TreeView ID="TreeView1" runat="server"> 
     <Nodes> 
      <asp:TreeNode Text="My Node" Value="My Node"></asp:TreeNode> 
     </Nodes> 
    </asp:TreeView> 

我已经添加了一个节点,看看它是显示/尝试使用find控件添加一个新的子节点,并没有奏效。建议?

谢谢。

回答

2

您正在分配两次相同的节点。一次到树视图节点,一次到另一个节点的子节点。如果您要将某个节点添加到某个节点,则不需要将节点分配给树视图本身。将代码更改为

TreeView1.Nodes.Add(node2) 
node2.ChildNodes().Add(node) 
1

我认为问题在于您将所有节点添加到错误的TreeView。您已将标记为“TreeView1”。所以这行:

Dim TreeView1 As TreeView = New TreeView 

应该被删除,其余的代码仍然应该工作得很好。

这假定您的TreeView直接位于“顶层”页面上,而不是某种容器(如UpdatePanel)。如果的情况下,您需要先使用FindControl来获得TreeView

所以,而不是删除上面的行,你会像这样的东西替代它:

Dim TreeView1 As TreeView = someContainer.FindControl("TreeView1") 

另外,该代码很可能需要在后面的代码的Page_Load部分运行(如果它还没有)。但我不认为这是问题所在。

+0

良好的捕获。但是,一旦我将其更改为页面上的树状视图,它仍然不显示。 – gbam 2012-08-14 17:43:21

+0

@Greg你是否尝试过其他答案中的代码?这是一个额外的问题:当你执行'TreeView1.Nodes(0).ChildNodes().Add(node)'时,它实质上是删除之前添加的节点并使其成为node2的子节点。这可能会造成一些混淆。 – jadarnel27 2012-08-14 18:40:08

+1

是的,我的代码开始工作......我不知道为什么。我从午餐回来,意外地进入了这部分的网站,并显示了树形图。感谢大家的帮助。 – gbam 2012-08-14 18:53:15