SPChangeQuery.ChangeTokenStart-Eigenschaft
Ruft ab oder legt diesen fest ein Token, das angibt, das Startdatum und-Zeit für Änderungen, die durch die Abfrage zurückgegeben werden.
Namespace: Microsoft.SharePoint
Assembly: Microsoft.SharePoint (in Microsoft.SharePoint.dll)
Syntax
'Declaration
Public Property ChangeTokenStart As SPChangeToken
Get
Set
'Usage
Dim instance As SPChangeQuery
Dim value As SPChangeToken
value = instance.ChangeTokenStart
instance.ChangeTokenStart = value
public SPChangeToken ChangeTokenStart { get; set; }
Eigenschaftswert
Typ: Microsoft.SharePoint.SPChangeToken
Ein SPChangeToken -Objekt, das Datum und die Uhrzeit angibt. Eine SPException -Ausnahme wird ausgelöst, wenn das Token auf einen Zeitpunkt vor dem Beginn der aktuellen Änderungsprotokoll verweist. Um zu Beginn des Änderungsprotokolls zu beginnen, legen Sie die Eigenschaft SPChangeTokenStart auf einen ein Nullverweis (Nothing in Visual Basic) -Wert.
Hinweise
Verwenden Sie den SPChangeToken -Konstruktor zum Erstellen eines ändern-Tokens, das verwendet werden kann, um diese Eigenschaft festzulegen. Oder rufen Sie ein SPChangeToken -Objekt durch Extrahieren aus der ChangeToken -Eigenschaft der letzten Änderung, die von einem vorherigen Aufruf der GetChanges -Methode zurückgegeben wird.
Beispiele
Im folgende Beispiel ist eine Konsolenanwendung, die das Änderungsprotokoll für Änderungen an Elementen in einer Website Benutzerinformationsliste abfragt. Beachten Sie, dass die Anwendung Änderungen in Batches wird durch Aufrufen der SPWeb.GetChanges -Methode in einer Schleife. Beim ersten Durchlaufen der Schleife ist der Wert der Eigenschaft ChangeTokenStartein Nullverweis (Nothing in Visual Basic), gibt an, dass die Abfrage am Anfang des Änderungsprotokolls gestartet werden soll. Am Ende der Schleife legt der Code die ChangeTokenStart -Eigenschaft auf den Wert des Tokens für die letzte Änderung im Batch ändern, damit der nächste Batch von Änderungen beginnt, an dem zuletzt unterbrochen.
Imports System
Imports Microsoft.SharePoint
Module ConsoleApp
Sub Main()
Using siteCollection As SPSite = New SPSite("https://localhost")
Using webSite As SPWeb = siteCollection.RootWeb
' Construct a query.
Dim query As New SPChangeQuery(False, True)
' Set a limit on the number of changes returned on a single trip.
query.FetchLimit = 500
' object type
query.Item = True
' Get list to query.
Dim list As SPList = webSite.Lists("User Information List")
Dim total As Integer = 0
' Loop until we reach the end of the log.
While True
Dim changes As SPChangeCollection = list.GetChanges(query)
total += changes.Count
For Each change As SPChangeItem In changes
' Get the item title.
Dim itemName As String = String.Empty
Try
Dim item As SPListItem = list.GetItemByUniqueId(change.UniqueId)
itemName = item.Name
Catch ex As ArgumentException
itemName = "Item not found"
End Try
' Write to the console.
Console.WriteLine(vbCrLf + "Date: {0}", change.Time.ToString())
Console.WriteLine("Change: {0}", change.ChangeType)
Console.WriteLine("Item: {0}", itemName)
Next change
' Break out of loop if we have the last batch.
If changes.Count < query.FetchLimit Then
Exit While
End If
' Otherwise, go get another batch.
query.ChangeTokenStart = changes.LastChangeToken
End While
Console.WriteLine(vbCrLf + "Total of {0} changes", total)
End Using
End Using
Console.Write(vbCrLf + "Press ENTER to continue...")
Console.ReadLine()
End Sub
End Module
using System;
using Microsoft.SharePoint;
namespace Test
{
class ConsoleApp
{
static void Main(string[] args)
{
using (SPSite siteCollection = new SPSite("https://localhost"))
{
using (SPWeb webSite = siteCollection.RootWeb)
{
// Construct a query.
SPChangeQuery query = new SPChangeQuery(false, true);
// Set a limit on the number of changes returned on a single trip.
query.FetchLimit = 500;
// object type
query.Item = true;
// list to query
SPList list = webSite.Lists["User Information List"];
int total = 0;
// Loop until we reach the end of the log.
while (true)
{
SPChangeCollection changes = list.GetChanges(query);
total += changes.Count;
foreach (SPChangeItem change in changes)
{
// Get the item title.
string itemName = String.Empty;
try
{
SPListItem item = list.GetItemByUniqueId(change.UniqueId);
itemName = item.Name;
}
catch (ArgumentException)
{
itemName = "Item not found";
}
// Write to the console.
Console.WriteLine("\nDate: {0}", change.Time.ToString());
Console.WriteLine("Change: {0}", change.ChangeType);
Console.WriteLine("Item: {0}", itemName);
}
// Break out of loop if we have the last batch.
if (changes.Count < query.FetchLimit)
break;
// Otherwise, go get another batch.
query.ChangeTokenStart = changes.LastChangeToken;
}
Console.WriteLine("\nTotal changes = {0:#,#}", total);
}
}
Console.Write("\nPress ENTER to continue...");
Console.ReadLine();
}
}
}