Я работаю с Sharepoint (Nuget: Microsoft.SharePoint.Client v14.0) и пытаюсь получить все изменения в определенном списке.Поэтому я использую C # и у меня есть следующий код:
// defining which changes i will track
ChangeQuery cq = new ChangeQuery(false, false)
{
Item = true,
DeleteObject = true,
Add = true,
Update = true
};
// here i get all changes in the past 24 hours
cq.ChangeTokenStart = new ChangeToken()
{
StringValue = String.Format("1;3;{0};{1};-1", list.Id.ToString(), DateTime.Now.AddDays(-1).ToUniversalTime().Ticks.ToString())
};
// Retrieving the changelog
ChangeCollection coll = list.GetChanges(cq);
clientContext.Load(coll);
clientContext.ExecuteQuery();
Пока все хорошо, все работает нормально.Теперь моя коллекция ChangeCollection показывает мне изменения для каждого элемента с типом изменения, например, «Обновить», «Добавить» и т. Д. Я также извлекаю, какой элемент изменился, id ...
Но теперь я хочуполучить конкретные поля и значения, которые изменились.Это должно показать мне: В элементе xy поле «title» изменилось с «hello» на «test»
Я прочитал, что вы должны получить File и FileVersionCollection, и я попробовал следующий код:
var changedItem = list.GetItemById(5);
clientContext.Load(changedItem);
clientContext.ExecuteQuery();
File fileVersion = web.GetFileByServerRelativeUrl(web.ServerRelativeUrl + "/Lists/" + list.Title + "/" + changedItem.Id + "_.000");
clientContext.Load(fileVersion);
FileVersionCollection fileVersions = fileVersion.Versions;
clientContext.Load(fileVersions);
clientContext.ExecuteQuery();
Хорошо, теперь я могу определить, сколько раз я менял элемент списка, но есть ли способ получить определенное поле и значение?