#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