Iterate all the sharepoint site collection and sub sites and create drill down menu

StackOverflow https://stackoverflow.com/questions/16806678

  •  30-05-2022
  •  | 
  •  

Вопрос

I need to iterate all the site collection under the web application and sub sites under the site collection and create share point drill down menu.

Это было полезно?

Решение

public class _starter : MasterPage
{
    protected Menu CustomMenu;

    protected void Page_Load(object sender, EventArgs e)
    {
        using (SPSite site = new SPSite(SPContext.Current.Site.Url))
        {
            SPWebApplication webapp = site.WebApplication;
            CustomMenu.Items.Clear();
            BeginProcess(webapp);
        }
    }

    public void BeginProcess(SPWebApplication webApp)
    {
        //Iterate through each site collection inside the web application
        //Iterate through each site collection inside the site collection 
        foreach (SPSite site in webApp.Sites)
        {
            using (SPWeb oSPWeb = site.OpenWeb())
            {
                if (oSPWeb.DoesUserHavePermissions(SPBasePermissions.EnumeratePermissions))
                {
                    MenuItem parentMenuItem = new MenuItem(oSPWeb.Title, oSPWeb.Title, "", oSPWeb.Url);
                    CustomMenu.Items.Add(parentMenuItem);
                    if (oSPWeb.Webs.Count > 0)
                    {
                        RecursiveWebCheck(oSPWeb, parentMenuItem);
                    }
                }
            }
        }
    }

    private void RecursiveWebCheck(SPWeb parentoSPWeb, MenuItem parentMenuItem)
    {
        foreach (SPWeb web in parentoSPWeb.Webs)
        {
            MenuItem childMenuItem = new MenuItem(web.Title, web.Title, "", web.Url);
            parentMenuItem.ChildItems.Add(childMenuItem);
            RecursiveWebCheck(web, childMenuItem);
            web.Dispose();
        }
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top