I need to populate the TreeNode.ChildNodes
on the event of TreeView.TreeNodeExpanded
. The problem is the node is empty before the event gets fired and it is not expandable in this case and there is no expand icon [+] showed next to it.
I want to make the node expandable in case its related object has some children without adding those children to the node.
I thought about adding a virtual child to the node and delete it when it is expanded. Are there any better options ??
Thank you.
Three steps to do the trick:
1 - Set the TreeView.ExpandDepth to 0. This eliminates the expansion of the added TreeNode
objects in the TreeView
and shows the expansion symbol [+] next to each TreeNode
that has the TreeNode.PopulateOnDemand
property set to true.
2- Set the TreeNode.PopulateOnDemand to True for each branch TreeNode
. When the TreeNode.ChildNodes
collection is empty, the expansion symbol [+] will be showed only next to TreeNode
objects that has TreeNode.PopulateOnDemand
property set to true.
3- Handle the TreeView.TreeNodePopulate event to poulate branch nodes on expansion. This event will be fired when a TreeNode
- with the TreeNode.PopulateOnDemand
set to true - has been expanded right before the TreeView.TreeNodeExpanded
event gets fired.
I suggest editing the template of the node. Have a look at An ASP.NET AJAX TreeView control with templates.
Not sure and do not have time to try but I guess what you are after is the TreeNode.PopulateOnDemand property and TreeView.TreeNodePopulate event.