Share via


SPWeb.GetChanges method (SPChangeToken, SPChangeToken)

取得在指定的一段時間登入的變更。

Namespace:  Microsoft.SharePoint
Assembly:  Microsoft.SharePoint (in Microsoft.SharePoint.dll)

Syntax

'宣告
Public Function GetChanges ( _
    changeToken As SPChangeToken, _
    changeTokenEnd As SPChangeToken _
) As SPChangeCollection
'用途
Dim instance As SPWeb
Dim changeToken As SPChangeToken
Dim changeTokenEnd As SPChangeToken
Dim returnValue As SPChangeCollection

returnValue = instance.GetChanges(changeToken, _
    changeTokenEnd)
public SPChangeCollection GetChanges(
    SPChangeToken changeToken,
    SPChangeToken changeTokenEnd
)

參數

傳回值

Type: Microsoft.SharePoint.SPChangeCollection
所做的變更。

Exceptions

Exception Condition
SPException

changeToken或changeTokenEnd指的是一個點之後,才開始目前的變更記錄檔。

備註

若要建構這個方法的SPChangeToken物件,傳遞SPChangeCollection.CollectionScope Web做為建構函式的第一個引數,目前物件的SPWeb.ID屬性,做為第二個引數和第三個引數的DateTime物件的值。

此外,可套用下列規則:

  • 如果changeTokenEnd中的變更記錄檔的位置是在變更記錄檔中的changeToken位置之前,這個方法會傳回空集合。

  • 如果changeToken是 null ,變更集合會傳回從目前的變更記錄檔的開頭開始。

  • 如果changeTokenEnd是 null ,則會傳回變更集合會包含所有變更之後changeToken,單一集合的限制所指定的位置。如果更多的變更發生在這段期間,會傳回第一批次。

注意事項注意事項

根據預設,變更記錄會保留資料的 60 天。若要變更預設的保留期限,請設定ChangeLogRetentionPeriod屬性。

Examples

下列範例是主控台應用程式,查詢在七天的期間內發生的變更的變更記錄檔。應用程式接著會列印到主控台的每個變更的相關資訊。

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)
            {
               SPTimeZone timeZone = webSite.RegionalSettings.TimeZone;
               long total = 0;

               SPChangeToken startToken = new SPChangeToken(
                  SPChangeCollection.CollectionScope.Web, 
                  webSite.ID,
                  new DateTime(2008, 11, 17));

               SPChangeToken endToken = new SPChangeToken(
                  SPChangeCollection.CollectionScope.Web, 
                  webSite.ID,
                  new DateTime(2008, 11, 23));

               SPChangeCollection changes = webSite.GetChanges(startToken, endToken);
               while (changes.Count > 0)
               {
                  total += changes.Count;

                  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 type: {0}", change.ChangeType);
                  }

                  startToken = changes.LastChangeToken;
                  changes = webSite.GetChanges(startToken, endToken);
               }
               Console.WriteLine("\nTotal changes = {0:#,#}", total);
            }
         }
         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.RootWeb
            Dim timeZone As SPTimeZone = webSite.RegionalSettings.TimeZone
            Dim total As Long = 0

            Dim startToken As New SPChangeToken(SPChangeCollection.CollectionScope.Web, _
                                                webSite.ID, _
                                                New DateTime(2008, 11, 17))

            Dim endToken As New SPChangeToken(SPChangeCollection.CollectionScope.Web, _
                                              webSite.ID, _
                                              New DateTime(2008, 11, 23))

            Dim changes As SPChangeCollection = webSite.GetChanges(startToken, endToken)
            While changes.Count > 0
               total += changes.Count

               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 type: {0}", change.ChangeType)

               Next change

               startToken = changes.LastChangeToken
               changes = webSite.GetChanges(startToken, endToken)

            End While

            Console.WriteLine(vbCrLf + "Total changes = {0:#,#}", total)

         End Using
      End Using
      Console.Write(vbCrLf + "Press ENTER to continue...")
      Console.ReadLine()
   End Sub
End Module

請參閱

參照

SPWeb class

SPWeb members

GetChanges overload

Microsoft.SharePoint namespace

其他資源

Using the Change Log