Как извлечь элементы списка из SharePoint 2013

#c# #list #sharepoint-2013

#c# #Список #sharepoint-2013

Вопрос:

На работе нам пришлось перейти с SharePoint 2010 на 2013, и мой код для извлечения элементов списка больше не работает. Вот мой код для SP 2010:

 com.mycompany.intranet.Lists listService = new com.mycompany.intranet.Lists();

listService.Credentials = System.Net.CredentialCache.DefaultCredentials;

listService.Url = "url";

System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();

string listName = cbxMailDistributionList.SelectedValue.ToString();
string viewName = "";
string rowLimit = "0";

System.Xml.XmlElement query = xmlDoc.CreateElement("Query");
System.Xml.XmlElement viewFields = xmlDoc.CreateElement("ViewFields");
System.Xml.XmlElement queryOptions = xmlDoc.CreateElement("QueryOptions");

viewFields.InnerXml = "<FieldRef Name='Title' />";

System.Xml.XmlNode nodeListItems =
listService.GetListItems(listName, viewName, query, viewFields, rowLimit, queryOptions, null);

xmlDoc.LoadXml(nodeListItems.InnerXml);

xlNodeList rows = xmlDoc.GetElementsByTagName("z:row");

List<string> recipients = new List<string>();

foreach (XmlNode attribute in rows)
{
  if(attribute.Attributes["ows_Title"].Value == null){}
  else {
    if (recipients.Contains(attribute.Attributes["ows_Title"].Value)){}
    else {
      recipients.Add(attribute.Attributes["ows_Title"].Value);
         }
       }
}

recipients.Sort();
distributionList = recipients;
  

Не могли бы вы, пожалуйста, помочь мне снова заставить его работать со списком SharePoint 2013?

URL-адрес уже обновлен, но я получаю следующую ошибку:https://msdn.microsoft.com/query/dev14 .query?appId=Dev14IDEF1amp;l=DE-DEamp;k=k(EHNullReference);k(TargetFrameworkMoniker-.NETFramework,Version=v4.0);k(DevLang-csharp)amp;rd=true

Но в списке нет пустых полей.

 listName 
  

является идентификатором элемента списка.

Пожалуйста, помогите.

Заранее спасибо!

Ответ №1:

Наконец-то это снова работает с этим кодом:

             List<string> recipients = new List<string>();

            string siteURL = @"myurl/";

            ClientContext cc = new ClientContext(siteURL);
            cc.Credentials = System.Net.CredentialCache.DefaultCredentials;

            Web web = cc.Web;

            List list = web.Lists.GetById(new Guid(cbxMailDistributionList.SelectedValue.ToString()));

            CamlQuery caml = new CamlQuery();

            ListItemCollection items = list.GetItems(caml);

            cc.Load<List>(list);
            cc.Load<ListItemCollection>(items);
            cc.ExecuteQuery();

            foreach (Microsoft.SharePoint.Client.ListItem item in items)
            {
                if(item.FieldValues["Title"] == null) { }
                else
                {
                    if (recipients.Contains(item.FieldValues["Title"].ToString())) { }
                    else
                    {
                        recipients.Add(item.FieldValues["Title"].ToString());
                    }
                }
            }

            recipients.Sort();
            distributionList = recipients;

        }
        else
        {
            distributionList = null;
        }
  

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

BR