Получить значения полей из журнала изменений - PullRequest
0 голосов
/ 18 октября 2018

Я работаю с 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();

Хорошо, теперь я могу определить, сколько раз я менял элемент списка, но есть ли способ получить определенное поле и значение?

...