Извлечение элементов списка из другого семейства сайтов в SharePoint 2010 - PullRequest
0 голосов
/ 17 февраля 2011

У меня проблемы с получением элементов списка из другого семейства сайтов. У меня нет проблем при попытке получить элементы списка из моего текущего семейства сайтов. Например, http://myintranet.com/Departments/IT работает. Но http://myintranet.com/sites/Departments/IT возвращает ошибку.

if (!String.IsNullOrEmpty(SiteName) && !String.IsNullOrEmpty(SPContext.Current.Web.Url))
    {
      SPSecurity.RunWithElevatedPrivileges(delegate()
      {
        using (SPSite intranetSite = new SPSite(SPContext.Current.Web.Url))
        {
          using (SPWeb currentWeb = intranetSite.AllWebs["/sites/projects/Physics"])
          {
            SPList postList = currentWeb.Lists.TryGetList("Issues");                

            if (postList != null)
            {
              IssueList.DataSource = postList.Items.GetDataTable();

              IssueList.DataBind();
            }
          }
        } 

      });
    }

Я не использовал код, отличный от того, что я обычно делаю, когда пытаюсь получить элементы списка. Разница лишь в том, что на этот раз я получаю элементы списка из другого семейства сайтов.

Спасибо за любую помощь!

1 Ответ

2 голосов
/ 17 февраля 2011

Проблема intranetSite.AllWebs. Это позволит получить только объекты SPWeb под вашим текущим семейством сайтов.

Нельзя вывести другое семейство сайтов непосредственно из одного семейства сайтов.

Несмотря на то, что / sites / projects выглядит как семейство сайтов chid из /, это не так / sites - это просто управляемый путь. / и / sites / projects находятся на одном уровне иерархии семейства сайтов.

Что вам нужно сделать, это:

if (!String.IsNullOrEmpty(SiteName) && !String.IsNullOrEmpty(SPContext.Current.Web.Url))
    {
      SPSecurity.RunWithElevatedPrivileges(delegate()
      {

          using (SPWeb currentWeb = new SPSite("http://server/sites/projects/Physics").OpenWeb())
          {
            SPList postList = currentWeb.Lists.TryGetList("Issues");                

            if (postList != null)
            {
              IssueList.DataSource = postList.Items.GetDataTable();

              IssueList.DataBind();
            }
          }

      });
    }
...