オブジェクトのクエリの変更を使用する
変更ログには変更されたオブジェクトに関する情報 (オブジェクトの種類、GUID、親オブジェクトの GUID) が記録されます。クライアントからこれらの値を使用してオブジェクトを取得できます。
次の例は、クライアントで SPChange オブジェクトを使用して、対応する SharePoint オブジェクトを取得する方法を示しています。
Dim mySiteCollection As New SPSite("http://siteUrl")
Dim myWebSite As SPWeb = mySiteCollection.RootWeb
Dim initToken As SPChangeToken = myWebSite.CurrentChangeToken
' Changing the title of the web.
myWebSite.Title = "My New Title"
myWebSite.Update()
Dim changes As SPChangeCollection = myWebSite.GetChanges(initToken)
Dim changedObject As SPChangeWeb = Nothing
Dim changedObjectGuid As New Guid()
Dim changedObjectSiteId As New Guid()
Dim change As SPChange
For Each change In changes
If TypeOf change Is Microsoft.SharePoint.SPChangeWeb Then
changedObject = CType(change, SPChangeWeb)
changedObjectGuid = changedObject.Id
changedObjectSiteId = changedObject.SiteId
End If
Next change
' Now that we have the GUIDs of the changed object
'and its parent object, we can retrieve the objects.
Dim changedSite As New SPSite(changedObjectSiteId)
Dim changedWebSite As SPWeb = changedSite.AllWebs(changedObjectGuid)
SPSite mySiteCollection = new SPSite("http://siteUrl");
SPWeb myWebSite = mySiteCollection.RootWeb;
SPChangeToken initToken = myWebSite.CurrentChangeToken;
/* Changing the title of the web.*/
myWebSite.Title = "My New Title";
myWebSite.Update();
SPChangeCollection changes = myWebSite.GetChanges(initToken);
SPChangeWeb changedObject = null;
Guid changedObjectGuid = new Guid();
Guid changedObjectSiteId = new Guid();
foreach (SPChange change in changes)
{
if (change is Microsoft.SharePoint.SPChangeWeb)
{
changedObject = (SPChangeWeb)change;
changedObjectGuid = changedObject.Id;
changedObjectSiteId = changedObject.SiteId;
}
}
/* Now that we have the GUIDs of the changed object
and its parent object, we can retrieve the objects.*/
SPSite changedSite = new SPSite(changedObjectSiteId);
SPWeb changedWebSite = changedSite.AllWebs[changedObjectGuid];