Missing the 'Expandable' TreeNode property

G

Guest

The MSDN has an article titled:
"HOW TO: Dynamically Add Nodes to a TreeView WebBrowser Control by Using
Visual C# .NET".
The article exploits a property of the TreeNode control called 'Expandable'.
However, the property is available only for the Web Controls, and to my
surprise I couldn't find it among the TreeNode Windows Forms properties.
This Expandable property is crucial if you want to develop a smart, dynamic
tree view which doesn't load all the data at once, but does it automatically
as the user requests to expand the node.
This is especially important if you want to bind the tree view to a database
which can contain thousands of rows and you don't want to load all the nodes
if the user doesn't even request it.
Without the Expandable property the node doesn't have the ability to expand
if you don't feed the sub-nodes during the tree creation. In other words the
node doesn't have the 'plus' box to trigger the 'Expand' request. If the
subnodes are supposed to be provided only on the expand request, then you are
stuck.
Is there any workaround for this problem?
Thanks
Cezar
 
T

Tobin Harris

Cezar said:
The MSDN has an article titled:
Without the Expandable property the node doesn't have the ability to
expand
if you don't feed the sub-nodes during the tree creation. In other words
the
node doesn't have the 'plus' box to trigger the 'Expand' request. If the
subnodes are supposed to be provided only on the expand request, then you
are
stuck.
Is there any workaround for this problem?
Thanks
Cezar

I have a work around that I've used in several programs (for example, see
the lazy-loading database tree view in SqlBuddy (sqlbuddy.sourceforge.net).

The work around is to add a dummy node to each parent node that you want to
lazy load. This forces the "+" to appear on these parent nodes. Then, in the
afterexpand event, first see if there is a "dummy" node under the parent. If
so then delete it (you don't want the user to see it). Then do your lazy
loading to add the real child nodes. A nice side-effect is that, if there
aren't any child nodes to lazy load, the "+" will dissappear (since the
dummy has been removed).

Hope this helps

Tobin
 
G

Guest

Thank you very much for your answer.
This is exactly what I did. The exception is that if there are no child
nodes I don't remove the dummy and simply let it show. The dummy has no text,
just a broken line ending in empty space making an impression of nothing to
chose from.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top