使用TreeView控件在ASP.NET中构建导航



我正在尝试使用TreeView Control在ASP.NET中的简单导航菜单构建Windows Explorer我放置了一个listView控件,该控件动态显示选定节点的孩子。

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

在pageload上,我将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>"));
     }
}

由于我是新手

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

第二," subgroup1和subgroup1"可能是语义错误。

我认为您将listView和listViewItem映射到了treenode。您需要单击ListViewItem以控制Treenode展开或崩溃。

或您想单击节点的"文本"以控制而不是" "/" - "符号。

无论如何,您必须找到节点,并扩大了判断。

可能是此代码可以帮助您。

    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;
    } 

最新更新