从DropDownList值C#ASP.NET加载TreeView

问题描述 投票:0回答:1

我有一个带TreeView和DropDownList的asp.net页面。TreeView在后面的代码中定义:

            <asp:TreeView ID="TreeViewResume" runat="server" ImageSet="Simple" NodeIndent="15" OnSelectedNodeChanged="ClickTreeViewResume">
            <HoverNodeStyle Font-Underline="True" ForeColor="#6666AA" />
            <NodeStyle Font-Names="Tahoma" Font-Size="12pt" ForeColor="#203239" HorizontalPadding="0px"
                NodeSpacing="0px" VerticalPadding="4px"></NodeStyle>
            <ParentNodeStyle Font-Bold="False" />
            <SelectedNodeStyle BackColor="#B5B5B5" Font-Underline="False" HorizontalPadding="2px"
                VerticalPadding="0px" />
        </asp:TreeView>

还有DropDownList:

<asp:Panel ID="PanelDdl" runat="server">Sélection de la période : <asp:DropDownList ID="Ddl" runat="server" OnSelectedIndexChanged="Ddl_SelectedIndexChanged" AutoPostBack="true">

我通过Page_Load()中的代码加载TreeView:

protected void Page_Load(object sender, EventArgs e)
{
    if (!this.IsPostBack)
    {
        RemplirTableau();
    }
}

我想在DropDownList的SelectedIndexChange()上更改TreeView的SQL源,并重画Treeview。

protected void Ddl_SelectedIndexChanged(object sender, EventArgs e)
{
    TreeViewResume.Nodes.Clear();
    RemplirTableau();        
}

相反,仅打印TreeView的第一级节点(父节点)。

请帮助吗?

c# asp.net drop-down-menu treeview
1个回答
0
投票

调用TreeView.Nodes将仅访问TreeView的直接子节点。为了访问较低的子级,可以使用某种类型的递归。

类似:

void ClearTreeView(TreeNode parentNode){
  foreach(TreeNode childNode in parentNode.Nodes){
    if(childNode.Nodes.Count > 0){
      ClearTreeView(childNode);
    }
    else{
      childNode.Nodes.Clear();
    }
  }
}

This Thread可能对您有所帮助,因为它显示了如何访问所有子节点,孙子节点等。>>


0
投票

我只需要添加一个TreeViewResume.DataBind();在重新创建TreeView之后:

© www.soinside.com 2019 - 2024. All rights reserved.