使用treeview控件在asp.net中构建导航

时间:2018-02-25 05:45:54

标签: c# asp.net treeview

我尝试使用Treeview控件在asp.net中构建一个类似于简单导航菜单的Windows资源管理器 我已经放置了一个Listview控件,它可以动态显示所选节点的子节点。

Root    
  -Group01
    -subgroup1    
      -1.1    
      -1.2   
    -subgroup2    
      -1.1
-Group02

在页面加载中我已将Treenode修复为0,因此在Listview中插入了Group01和Group02按钮。

我想知道的是假设我点击它应该显示的Listview中的Group01按钮 subgroup1和subgroup1等等而不是rootnode的子节点。

这是.aspx代码

<div>
<asp:TreeView ID="TreeView1" runat="server" OnSelectedNodeChanged="TreeView1_SelectedNodeChanged">
    <Nodes>
        <asp:TreeNode SelectAction="SelectExpand" Text="root" Value="root">
            <asp:TreeNode Expanded="False" SelectAction="SelectExpand" Text="group01" Value="group01">
                <asp:TreeNode Text="subgroup1" Value="subgroup1">
                    <asp:TreeNode Text="1.1" Value="1.1"></asp:TreeNode>
                    <asp:TreeNode Text="1.2" Value="1.2"></asp:TreeNode>
                </asp:TreeNode>
                <asp:TreeNode Text="subgroup2" Value="subgroup2">
                    <asp:TreeNode Text="1.1" Value="1.1"></asp:TreeNode>
                </asp:TreeNode>
            </asp:TreeNode>
            <asp:TreeNode Expanded="False" SelectAction="SelectExpand" Text="group02" Value="group02">
            </asp:TreeNode>
       </asp:TreeNode>
    </Nodes>
</asp:TreeView>
</div>
 <div>
    <asp:ListView ID="ListView1" runat="server">
    </asp:ListView>
</div>

aspx.cs代码

protected void Page_Load(object sender, EventArgs e)
{
    TreeView1.Nodes[0].Select();
    TreeView1_SelectedNodeChanged(this, EventArgs.Empty);
}
protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
{
    ListView1.Controls.Clear();
    List<string> childs = new List<string>();
    for (int i = 0; i < TreeView1.SelectedNode.ChildNodes.Count; i++)
    {
        childs.Add(TreeView1.SelectedNode.ChildNodes[i].Text);
    }
    foreach (string val in childs)
    {
        Button btn = new Button
        {
            Text = val
        };
        ListView1.Controls.Add(btn);
        ListView1.Controls.Add(new LiteralControl("</br></br>"));
     }
}

由于我是新手,我想知道这是否是正确的做法或其他选择。

1 个答案:

答案 0 :(得分:0)

首先,您的.aspx文件不包含ListView1。

其次,“subgroup1和subgroup1”可能是语义错误。

我认为你对Listview和映射treeNode的ListViewItem有所了解。您需要单击ListViewItem来控制treenode展开或折叠。

或者您想要点击要控制的节点的“文本”而不​​是“+”/“ - ”符号。

在任何情况下,您必须找到该节点,并判断Expanded。

可能这段代码可以帮到你。

    protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
    {
        TreeView tree = (TreeView)sender;
        TreeNode node = tree.SelectedNode;
        bool isExpanded = Boolean.Parse(node.Expanded.ToString());
        if (isExpanded)
            node.Collapse();
        else
            node.Expand();
        tree.SelectedNode.Selected = false;
    }