Solved

treenodes not expanding when selectednodechanged event defined

Posted on 2008-06-14
3
1,377 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

PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Loop not working 29 47
DateTimepicker 4 33
scanning dentists xray (the small ones) 3 45
Yet more SharePoint App with Angular and Bootstrap 4 5
We had a requirement to extract data from a SharePoint 2010 Customer List into a CSV file and then place the CSV file into a directory on the network so that the file could be consumed by an AS400 system. I will share in Part 1 how to Extract the Da…
International Data Corporation (IDC) prognosticates that before the current the year gets over disbursing on IT framework products to be sent in cloud environs will be $37.1B.
This Micro Tutorial will teach you how to censor certain areas of your screen. The example in this video will show a little boy's face being blurred. This will be demonstrated using Adobe Premiere Pro CS6.
Video by: Mark
This lesson goes over how to construct ordered and unordered lists and how to create hyperlinks.

867 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

22 Experts available now in Live!

Get 1:1 Help Now