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

Re: Missing the 'Expandable' TreeNode property by Tobin

Tobin
Sat Mar 12 19:30:33 CST 2005

"Cezar" <Cezar@discussions.microsoft.com> wrote in message
news:103B61C3-821F-45A6-B078-21C4204F131A@microsoft.com...
> 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



Re: Missing the 'Expandable' TreeNode property by Cezar

Cezar
Mon Mar 14 17:09:01 CST 2005

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.

"Tobin Harris" wrote:

> "Cezar" <Cezar@discussions.microsoft.com> wrote in message
> news:103B61C3-821F-45A6-B078-21C4204F131A@microsoft.com...
> > 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
>
>
>