Share via


(SPChangeToken, SPChangeToken) del método SPList.GetChanges

Devuelve una colección de cambios registrados en un período de tiempo especificado.

Espacio de nombres:  Microsoft.SharePoint
Ensamblado:  Microsoft.SharePoint (en Microsoft.SharePoint.dll)

Sintaxis

'Declaración
Public Function GetChanges ( _
    changeToken As SPChangeToken, _
    changeTokenEnd As SPChangeToken _
) As SPChangeCollection
'Uso
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
)

Parámetros

Valor devuelto

Tipo: Microsoft.SharePoint.SPChangeCollection
Los cambios.

Excepciones

Excepción Condición
SPException

changeToken o changeTokenEnd no es un token válido.

Comentarios

Al construir los objetos SPChangeToken para usar con este método, pase SPChangeCollection.CollectionScope. List como primer argumento del constructor, el valor de la actual propiedad del objeto SPList.ID como segundo argumento y un objeto de DateTime como el tercer argumento.

Además, se aplican las siguientes reglas:

  • Si uno de los tokens hace referencia a una hora antes del inicio del registro de cambios actual, el método produce una excepción.

  • Si la hora del segundo token es anterior a la hora del primer token, el método devuelve una colección vacía.

  • Si el primer token es una referencia null (Nothing en Visual Basic), la colección de cambios que se devuelve comienza al principio del registro de cambios actual.

  • Si el segundo token es una referencia null (Nothing en Visual Basic), la colección de cambios que se devuelve incluye todos los cambios posteriores a la fecha especificada por el primer token de cambio, hasta el límite para una única colección. Si en este período hubo más cambios, se devuelve el primer lote.

Nota

De forma predeterminada, el registro de cambios conserva los datos durante 60 días. Puede configurar el período de retención estableciendo la propiedad ChangeLogRetentionPeriod .

Ejemplos

En el siguiente ejemplo es una aplicación de consola que consulta el registro de cambios de los cambios realizados en una lista durante un período de siete días. Después de recuperar los cambios, la aplicación imprime información acerca de cada cambio en la consola.

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

Vea también

Referencia

clase SPList

Miembros SPList

Sobrecarga GetChanges

Espacio de nombres Microsoft.SharePoint

Otros recursos

Using the Change Log