2016-10-20 4 views
-1

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

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=Dev14IDEF1&l=DE-DE&k=k(EHNullReference);k(TargetFrameworkMoniker-.NETFramework,Version%3Dv4.0);k(DevLang-csharp)&rd=true

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

listName 

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

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

Заранее благодарен!

ответ

0

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

  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

Смежные вопросы