Solved

treenodes not expanding when selectednodechanged event defined

Posted on 2008-06-14
3
1,373 Views
Last Modified: 2012-06-27
Hi - I'm using a treeview control in a sharepoint webpart.  It is populating ok and the nodes are expandable normally but when  I add a TreeNodeExpanded event handler to the treeview, nodes after a depth of two stop expanding.  Am I doing something wrong?
When I'm debugging, the treenodexpanded event handler executes regardless of whether the node expands or not.
0
Comment
Question by:millerthegorilla
  • 3
3 Comments
 

Author Comment

by:millerthegorilla
ID: 21785556
I believe it has something to do with the way I am populating the tree view.  I attach the relevant code.
       /// <summary>

        /// PopulateTreeView is a recursive function, starting at the supplied SPWeb parameter it will extract all relevant information from the site before recursing for each sub site.

        /// </summary>

        /// <param name="web">web is the starting SPWeb (SharePoint web site) for the function.  In this case the current site i.e. the site on which the web part is placed.</param>

        /// <returns></returns>

        /// copied from http://www.sharepointblogs.com/andynoon/archive/2008/03/20/everyone-wants-one.aspx

        public TreeNode PopulateTreeView(SPWeb web)

        {

            TreeNode top = null;

            if (web != null)

            {

                //get detail of this current web

                if(showLinks ) top = new TreeNode("Site Details(" + web.Title + ")", "0", "/_layouts/images/SPHOMESM.GIF", web.Url, "_blank");

                else top = new TreeNode("Site Details(" + web.Title + ")", "0", "/_layouts/images/SPHOMESM.GIF");

                TreeNode node;

                if(showLinks) 

                {

                    node = new TreeNode(web.Title, "root", "/_layouts/images/ICHTT.GIF", web.Url, "_blank");

                    node.ChildNodes.Add(new TreeNode("URL: " + web.Url, "", "/_layouts/images/NEWLINK.GIF", web.Url, "_blank"));

                }

                else

                {

                    node = new TreeNode(web.Title, "root", "/_layouts/images/ICHTT.GIF");

                    node.ChildNodes.Add(new TreeNode("URL: " + web.Url, "", "/_layouts/images/NEWLINK.GIF"));

                }

                TreeNode users = new TreeNode("Users", "", "/_layouts/images/stsicon.gif");

                users.SelectAction = TreeNodeSelectAction.SelectExpand;

                //get all admins

                TreeNode admins = new TreeNode("Administrators (" + web.SiteAdministrators.Count + ")", "", "/_layouts/images/STSPEOPL.GIF");

                foreach (SPUser user in web.SiteAdministrators)

                {

                    TreeNode usr;

                    if (showLinks)

                    {

                        usr = new TreeNode(user.LoginName + "(" + user.Email + ")", "", "/_layouts/images/STAR.GIF", "mailto:" + user.Email, "");

                    }

                    else

                    {

                        usr = new TreeNode(user.LoginName + "(" + user.Email + ")", "", "/_layouts/images/STAR.GIF");

                    }

                    admins.ChildNodes.Add(usr);

                }

                users.ChildNodes.Add(admins);

                //get all groups and users within those groups

                foreach (SPGroup group in web.Groups)

                {

                    //record this group

                    TreeNode grp = new TreeNode(group.Name + " (" + group.Users.Count + ")", "", "/_layouts/images/STSPEOPL.GIF");

                    //for for each user in this group

                    foreach (SPUser user in group.Users)

                    {

                        TreeNode usr;

                        //record this user

                        if (showLinks)

                        {

                            usr = new TreeNode(user.LoginName + "(" + user.Email + ")", "", "/_layouts/images/mysite_titlegraphic.gif", "mailto:" + user.Email, "");

                        }

                        else

                        {

                            usr = new TreeNode(user.LoginName + "(" + user.Email + ")", "", "/_layouts/images/mysite_titlegraphic.gif");

                        }
 

                        grp.ChildNodes.Add(usr);

                    }

                    users.ChildNodes.Add(grp);

                }

                node.ChildNodes.Add(users);

                //get all lists (includes document libraries, discussion forums...)

                TreeNode lists = new TreeNode("Lists and libraries (" + web.Lists.Count + ")", "", "/_layouts/images/sts_list16.gif");

                foreach (SPList list in web.Lists)

                {

                    TreeNode lst = null;

                    try

                    {

                        //an exception can be thrown if an attempt to get the amount of items in a list returns null, also if the list is partially defines an exception may be thrown

                        if(showLinks)

                        {

                            lst = new TreeNode(list.Title + " (" + list.ItemCount + " items)", "", "/_layouts/images/iKpiList.png", list.DefaultViewUrl, "_blank");

                        }

                        else

                        {

                            lst = new TreeNode(list.Title + " (" + list.ItemCount + " items)", "", "/_layouts/images/iKpiList.png");

                        }

                    }

                    catch (Exception)

                    {

                        //if the exception (above) was thrown, just record the name of the list (ignore the amount of items)

                        lst = new TreeNode(list.Title);

                    }

                    lists.ChildNodes.Add(lst);

                }

                node.ChildNodes.Add(lists);

                //recurse for each sub web of the current web

                TreeNode webs = new TreeNode("Sub Webs (" + web.Webs.Count + ")", "", "/_layouts/images/SITEVARIATION.GIF");

                foreach (SPWeb subweb in web.Webs)

                {

                    webs.ChildNodes.Add(PopulateTreeView(subweb));

                }

                node.ChildNodes.Add(webs);

                top.ChildNodes.Add(node);
 

            }

            //return the complete node

            return top;

        }

Open in new window

0
 

Author Comment

by:millerthegorilla
ID: 21786008
I've found part of the problem.  When I comment out the event handler I get javascript:Treeview_togglenode(...  appearing in the status bar of ie when the expand/contract (+/-) sign is rolled over and everything works.  When I uncomment the eventhandler and roll over the +/- sign I get javascript:doPostBack(........,'\t0\\root\\') where the dots are the control reference.  Why does this happen?
0
 

Accepted Solution

by:
millerthegorilla earned 0 total points
ID: 21786167
I've found the solution.  When I am constructing my treenodes in the populatetreeview function I am not passing in a node specific id value. the call should be this:
usr = new TreeNode(user.LoginName + "(" + user.Email + ")", "nodespecificid", "/_layouts/images/STAR.GIF", "mailto:" + user.Email, "");
instead of this:
usr = new TreeNode(user.LoginName + "(" + user.Email + ")", "", "/_layouts/images/STAR.GIF", "mailto:" + user.Email, "");
wahey!
0

Featured Post

IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

IntroductionWhile developing web applications, a single page might contain many regions and each region might contain many number of controls with the capability to perform  postback. Many times you might need to perform some action on an ASP.NET po…
Summary In SharePoint 2010 it is easy to create custom color themes to jazz up a site. Theme colors can also be created in PowerPoint 2010 with a few clicks. But how do the chosen colors actually look in the SharePoint site? The attached PowerPoint…
Excel styles will make formatting consistent and let you apply and change formatting faster. In this tutorial, you'll learn how to use Excel's built-in styles, how to modify styles, and how to create your own. You'll also learn how to use your custo…
Access reports are powerful and flexible. Learn how to create a query and then a grouped report using the wizard. Modify the report design after the wizard is done to make it look better. There will be another video to explain how to put the final p…

706 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now