返回指定的一段时间记录所做更改的集合。
命名空间: Microsoft.SharePoint
程序集: Microsoft.SharePoint(位于 Microsoft.SharePoint.dll 中)
语法
声明
Public Function GetChanges ( _
changeToken As SPChangeToken, _
changeTokenEnd As SPChangeToken _
) As SPChangeCollection
用法
Dim instance As SPList
Dim changeToken As SPChangeToken
Dim changeTokenEnd As SPChangeToken
Dim returnValue As SPChangeCollection
returnValue = instance.GetChanges(changeToken, _
changeTokenEnd)
public SPChangeCollection GetChanges(
SPChangeToken changeToken,
SPChangeToken changeTokenEnd
)
参数
changeToken
类型:Microsoft.SharePoint.SPChangeToken开始日期和时间。
changeTokenEnd
类型:Microsoft.SharePoint.SPChangeToken结束日期和时间。
返回值
类型:Microsoft.SharePoint.SPChangeCollection
所做的更改。
异常
| 异常 | 条件 |
|---|---|
| SPException | changeToken或changeTokenEnd不是有效令牌。 |
备注
在构造时要使用此方法时使用的SPChangeToken对象,传递SPChangeCollection.CollectionScope。List作为构造函数的第一个参数,当前对象的SPList.ID属性作为第二个参数和DateTime对象作为第三个参数的值。
此外,下列规则适用:
如果任一标记引用的当前更改日志开始前的时间,则该方法将引发异常。
如果第二个标记的时间的第一个标记的时间之前,该方法将返回一个空集合。
如果第一个标记为 空引用(无 在 Visual Basic 中),则返回的更改集合将从当前更改日志的开头开始。
如果第二个标记为 空引用(无 在 Visual Basic 中),则返回的更改集合将包含第一个更改标记指定的日期之后发生的所有更改(直到达到单个集合的限制)。如果此时间段内发生多个更改,则返回第一个批次。
备注
默认情况下,更改日志保留 60 天的数据。您可以通过ChangeLogRetentionPeriod属性设置配置的保留期。
示例
下面的示例是一个控制台应用程序查询七天期间对列表的更改的更改日志。检索所做的更改之后, 将应用程序打印到控制台的每个更改的信息。
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];
SPChangeToken startToken = new SPChangeToken(
SPChangeCollection.CollectionScope.List,
list.ID,
new DateTime(2008, 10, 12));
SPChangeToken endToken = new SPChangeToken(
SPChangeCollection.CollectionScope.List,
list.ID,
new DateTime(2008, 10, 18));
SPTimeZone timeZone = webSite.RegionalSettings.TimeZone;
int total = 0;
// Get the first batch of changes.
SPChangeCollection changes = list.GetChanges(startToken, endToken);
// Loop until we reach the end of the log.
while (changes.Count > 0)
{
total += changes.Count;
// Print info about each change to the console.
foreach (SPChange change in changes)
{
Console.WriteLine("\nDate: {0}",
timeZone.UTCToLocalTime(change.Time).ToString());
Console.WriteLine("Object type: {0}", change.GetType().ToString());
Console.WriteLine("Change: {0}", change.ChangeType.ToString());
}
// Go get another batch.
startToken = changes.LastChangeToken;
changes = list.GetChanges(startToken, endToken);
}
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)
Dim startToken As New SPChangeToken(SPChangeCollection.CollectionScope.List, _
list.ID, _
New DateTime(2008, 10, 12))
Dim endToken As New SPChangeToken(SPChangeCollection.CollectionScope.List, _
list.ID, _
New DateTime(2008, 10, 18))
Dim timeZone As SPTimeZone = webSite.RegionalSettings.TimeZone
Dim total As Integer = 0
' Get the first batch of changes.
Dim changes As SPChangeCollection = list.GetChanges(startToken, endToken)
' Loop until we reach the end of the log.
While changes.Count > 0
total += changes.Count
' Print info about each change to the console.
For Each change As SPChange In changes
Console.WriteLine(vbCrLf + "Date: {0}", timeZone.UTCToLocalTime(change.Time).ToString())
Console.WriteLine("Object type: {0}", change.GetType().ToString())
Console.WriteLine("Change: {0}", change.ChangeType.ToString())
Next change
' Go get another batch of changes starting where we left off.
startToken = changes.LastChangeToken
changes = list.GetChanges(startToken, endToken)
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