библиотека запросов страниц в зависимости от типа контента - PullRequest
0 голосов
/ 24 января 2012

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

Это описание в стеке:

   at Microsoft.SharePoint.SPGlobal.HandleComException(COMException comEx)
   at Microsoft.SharePoint.Library.SPRequest.GetMetadataForUrl(String bstrUrl, Int32 METADATAFLAGS, Guid& pgListId, Int32& plItemId, Int32& plType, Object& pvarFileOrFolder)
   at Microsoft.SharePoint.SPWeb.GetList(String strUrl)
   at Intranet.ControlTemplates.ShortNewsOverview.GetItemFromList(SPWeb web, SPContentTypeUsage u, SPContentType ct)
   at Intranet.ControlTemplates.ShortNewsOverview.GetAllItems()
   at Intranet.ControlTemplates.ShortNewsOverview.Page_Load(Object sender, EventArgs e)


private void GetItemsbyContentType()
{

    SPSite site = SPContext.Current.Site;

    SPWeb rootwWeb = site.RootWeb;
    SPContentType ct = rootwWeb.ContentTypes["GeneralNews"];

    IList<SPContentTypeUsage> usages = SPContentTypeUsage.GetUsages(ct);

    foreach (SPContentTypeUsage usage in usages)
    {

        if (usage.IsUrlToList)
        {
            SPList list = rootwWeb.GetList(usage.Url); /// <-- Error occurs here
            SPQuery query = new SPQuery();
            query.Query = "<Query />";

                //string.Concat(
                //            "<Where><Eq>",
                //                "<FieldRef Name='ContentType'/>",
                //                string.Format("<Value Type='Computed'>{0}</Value>", ct.Name),
                //            "</Eq></Where>");

            SPListItemCollection listItems = list.GetItems(query);

            Label lable1 = new Label();

            foreach (SPItem item in listItems)
            {
                lable1.Text += item["Title"].ToString() + "<br />";
            }
            Controls.Add(lable1);
            //for (int i = 0; i < listItems.Count; i++)
            //{
            //    listItems[i].Delete();
            //}
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...