我正在使用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中,“标题”字段已从“你好”更改为“测试”
我了解到您必须获取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();
好吧,现在我可以检测到我更改了一个列表项的次数,但是有什么方法可以检索特定的字段和值?