user1889838
user1889838

Reputation: 343

ASP.NET: Add tree node at specific level everytime

I have a treeview on a page, i want to update/add nodes to it on some events - eg., I have a dropdown list, i have checkbox list, etc. Treeview has a node at level 0 already defined. I want to add ONLY one node as a child of node 0 on dropdown_selectedIndexchanged event. for that I am doing this -

The treeview on aspx page

<asp:TreeView ID="tv1" runat="server">
   <Nodes>
       <asp:TreeNode Text="parent" Value="" ShowCheckBox="False"></asp:TreeNode>
   </Nodes>
</asp:TreeView>

code on .cs page

dropdown_SelectedIndexChanged(object sender, EventArgs e)
{
   tv1.Nodes[0].ChildNodes.Add(new TreeNode(dropdown.SelectedIndex.Text.Trim)));
}

I see the problem but not sure how to solve it. The problem is - I want to add ONE and ONLY ONE child node at level 0 of tv1 treeview.

how can i do that

Upvotes: 0

Views: 1885

Answers (1)

Nexus23
Nexus23

Reputation: 6373

It might not be working because of "AutoPostBack" property of dropdown is set to false. The event handler will fire only if you have set this property to true. Following code is working for me.

        <asp:DropDownList ID="dropdown" runat="server" AutoPostBack="True" OnSelectedIndexChanged="dropdown_SelectedIndexChanged">
            <asp:ListItem>One</asp:ListItem>
            <asp:ListItem>Two</asp:ListItem>
        </asp:DropDownList>
    <asp:TreeView ID="tv1" runat="server">
   <Nodes>

       <asp:TreeNode Text="parent" Value="" ShowCheckBox="False"></asp:TreeNode>
   </Nodes>
</asp:TreeView>

Code Behind (You can get value directly or by index):

        protected void dropdown_SelectedIndexChanged(object sender, EventArgs e)
        {
            tv1.Nodes[0].ChildNodes.Clear();
            tv1.Nodes[0].ChildNodes.Add(new TreeNode(dropdown.SelectedValue));
        }

Upvotes: 1

Related Questions