Поделиться через


Метод SPList.GetChanges (SPChangeToken, SPChangeToken)

Возвращает коллекцию изменений в систему указанного периода времени.

Пространство имен:  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
)

Параметры

Возвращаемое значение

Тип: Microsoft.SharePoint.SPChangeCollection
Изменения.

Исключения

Исключение Условие
SPException

changeToken или changeTokenEnd не является допустимым маркером.

Замечания

При создании объектов SPChangeToken для использования с помощью этого метода передайте SPChangeCollection.CollectionScope. List как первый аргумент конструктора, значение свойства SPList.ID текущего объекта в качестве аргумента второй и объектом DateTime в качестве третьего аргумента.

Кроме того применяются следующие правила:

  • Если оба маркера ссылаются на время до начала текущего журнала изменений, то метод создает исключение.

  • Если время второй маркер прежде чем время первого маркера, метод возвращает пустую коллекцию.

  • Если первый маркер имеет значение пустая ссылка (Nothing в Visual Basic), то возвращается коллекция изменений с начала текущего журнала изменений.

  • Если второй маркер имеет значение пустая ссылка (Nothing в 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

См. также

Справочные материалы

SPList класс

Элементы SPList

Перегрузка GetChanges

Пространство имен Microsoft.SharePoint

Другие ресурсы

Using the Change Log