Reputation: 343
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
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