SPList.GetChanges-Methode (SPChangeQuery)
Ruft die Änderungen der Liste aus dem Änderungsprotokoll als anhand der angegebenen Abfrage gefiltert.
Namespace: Microsoft.SharePoint
Assembly: Microsoft.SharePoint (in Microsoft.SharePoint.dll)
Syntax
'Declaration
Public Function GetChanges ( _
query As SPChangeQuery _
) As SPChangeCollection
'Usage
Dim instance As SPList
Dim query As SPChangeQuery
Dim returnValue As SPChangeCollection
returnValue = instance.GetChanges(query)
public SPChangeCollection GetChanges(
SPChangeQuery query
)
Parameter
query
Typ: Microsoft.SharePoint.SPChangeQueryDie Abfrage.
Rückgabewert
Typ: Microsoft.SharePoint.SPChangeCollection
Die Änderungen aufgezeichnet, die Liste anhand der angegebenen Abfrage gefiltert. Aus Performance-Gründen beschränkt sich die Anzahl der Änderungen, die in einer einzelnen Auflistung zurückgegeben werden kann. Sie können die maximale Größe der Auflistung durch Festlegen der FetchLimit -Eigenschaft anpassen.
Hinweise
Verwenden Sie diese Methode zum Filtern von Änderungen, wenn Sie nur Änderungen an bestimmten Objekten, anstatt alle Objekte, oder nur in ausgewählten Aktionen für Objekte mit bestimmten interessiert sind. Weitere Informationen zu Abfragen finden Sie unter der SPChangeQuery -Klasse.
Hinweis
Standardmäßig behält das Änderungsprotokoll Daten für 60 Tage. Sie können die Aufbewahrungsdauer konfigurieren, indem die ChangeLogRetentionPeriod -Eigenschaft.
Beispiele
Im folgende Beispiel ist eine einfache Konsolenanwendung, die das Änderungsprotokoll für Artikel hinzugefügt, aktualisiert oder gelöscht wird, aus einer angegebenen Liste abfragt. Nach dem Abrufen der Änderungen, die Anwendung jede Änderung überprüft und druckt das Datum der Änderung, die Art der Änderung und der Name des Artikels, der in der Konsole geändert wurde.
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.OpenWeb())
{
// Get a list.
SPList list = webSite.Lists[0];
// Construct a query.
SPChangeQuery query = new SPChangeQuery(false, // limit object types
false); // limit change types
// Specify the object type.
query.Item = true;
// Specify change types.
query.Add = true;
query.Delete = true;
query.Update = true;
SPTimeZone timeZone = webSite.RegionalSettings.TimeZone;
int total = 0;
// Loop until we reach the end of the log.
while (true)
{
SPChangeCollection changes = list.GetChanges(query);
total += changes.Count;
// Print info about each change to the console.
foreach (SPChangeItem change in changes)
{
// Get the item name.
string itemName = String.Empty;
SPListItem item = null;
try
{
item = list.GetItemByUniqueId(change.UniqueId);
itemName = item.Name;
}
catch (ArgumentException)
{
itemName = "Unknown";
}
Console.WriteLine("\nDate: {0}",
timeZone.UTCToLocalTime(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 of {0} changes to {1} list", total, list.Title);
}
}
Console.Write("\nPress ENTER to continue...");
Console.ReadLine();
}
}
}
Imports System
Imports Microsoft.SharePoint
Module ConsoleApp
Sub Main()
Using siteCollection As SPSite = New SPSite("https://localhost")
Using webSite As SPWeb = siteCollection.OpenWeb()
' Get a list.
Dim list As SPList = webSite.Lists(0)
' Construct a query
Dim query As New SPChangeQuery(False, False)
' Specify the object type.
query.Item = True
' Specify change types.
query.Add = True
query.Delete = True
query.Update = True
Dim timeZone As SPTimeZone = webSite.RegionalSettings.TimeZone
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
' Print info about each change to the console.
For Each change As SPChangeItem In changes
' Get the item name.
Dim itemName As String = String.Empty
Dim item As SPListItem = Nothing
Try
item = list.GetItemByUniqueId(change.UniqueId)
itemName = item.Name
Catch ex As ArgumentException
itemName = "Unknown"
End Try
Console.WriteLine(vbCrLf + "Date: {0}", timeZone.UTCToLocalTime(change.Time).ToString())
Console.WriteLine("Change: {0}", change.ChangeType)
Console.WriteLine("Item: {0}", itemName)
Next change
' Break out of the loop when we fetch the last batch of changes.
If changes.Count < query.FetchLimit Then
Exit While
End If
' Go get another batch of changes starting where we left off.
query.ChangeTokenStart = changes.LastChangeToken
End While
Console.WriteLine(vbCrLf + "Total of {0:#,#} changes to {1} list", total, list.Title)
End Using
End Using
Console.Write(vbCrLf + "Press ENTER to continue...")
Console.ReadLine()
End Sub
End Module
Siehe auch
Referenz
Microsoft.SharePoint-Namespace