A user recently asked me on the ASP.NET forums on how to expand only one parent node at a time. When the user clicks on a parent node, the ones that are already expanded (if any) should collapse. The answer to this question lies in the TreeNodeExpanded event as shown below:
TreeView markup<asp:TreeView ID="TreeView1" runat="server"
ExpandDepth = "0"
ontreenodeexpanded="TreeView1_TreeNodeExpanded">
<Nodes>
<asp:TreeNode Text="Managers">
<asp:TreeNode Text="Scott" Value="EID-XY34E" />
<asp:TreeNode Text="Brinda" Value="EID-34D78" />
<asp:TreeNode Text="Kathy" Value="EID-563D1" />
</asp:TreeNode>
<asp:TreeNode Text="Accounts">
<asp:TreeNode Text="Laura" Value="EID-QQ21E" />
<asp:TreeNode Text="Jemmica" Value="EID-YUR78" />
<asp:TreeNode Text="Nicole" Value="EID-TG331" />
</asp:TreeNode>
<asp:TreeNode Text="Admin">
<asp:TreeNode Text="Jack" Value="EID-PO41E" />
<asp:TreeNode Text="Victor" Value="EID-HYR78" />
<asp:TreeNode Text="Broady" Value="EID-KL931" />
</asp:TreeNode>
</Nodes>
</asp:TreeView>
C#protected void TreeView1_TreeNodeExpanded(object sender,
TreeNodeEventArgs e)
{ string currValue = e.Node.Value.Trim();
foreach (TreeNode tnode in TreeView1.Nodes)
{ if (tnode.Value != currValue)
{ tnode.Collapse();
}
}
}
VB.NET Protected Sub TreeView1_TreeNodeExpanded( _
ByVal sender As Object, ByVal e As TreeNodeEventArgs)
Dim currValue As String = e.Node.Value.Trim()
For Each tnode As TreeNode In TreeView1.Nodes
If tnode.Value <> currValue Then
tnode.Collapse()
End If
Next tnode
End Sub