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


Метод Lists.GetListItemChangesSinceToken

Возвращает изменения, внесенные в список с даты и времени, указанного в маркер.

Пространство имен:  WebSvcLists
Сборка:  STSSOAP (в STSSOAP.dll)

Синтаксис

'Декларация
<SoapDocumentMethodAttribute("https://schemas.microsoft.com/sharepoint/soap/GetListItemChangesSinceToken", RequestNamespace := "https://schemas.microsoft.com/sharepoint/soap/",  _
    ResponseNamespace := "https://schemas.microsoft.com/sharepoint/soap/",  _
    Use := SoapBindingUse.Literal, ParameterStyle := SoapParameterStyle.Wrapped)> _
Public Function GetListItemChangesSinceToken ( _
    listName As String, _
    viewName As String, _
    query As XmlNode, _
    viewFields As XmlNode, _
    rowLimit As String, _
    queryOptions As XmlNode, _
    changeToken As String, _
    contains As XmlNode _
) As XmlNode
'Применение
Dim instance As Lists
Dim listName As String
Dim viewName As String
Dim query As XmlNode
Dim viewFields As XmlNode
Dim rowLimit As String
Dim queryOptions As XmlNode
Dim changeToken As String
Dim contains As XmlNode
Dim returnValue As XmlNode

returnValue = instance.GetListItemChangesSinceToken(listName, _
    viewName, query, viewFields, rowLimit, _
    queryOptions, changeToken, contains)
[SoapDocumentMethodAttribute("https://schemas.microsoft.com/sharepoint/soap/GetListItemChangesSinceToken", RequestNamespace = "https://schemas.microsoft.com/sharepoint/soap/", 
    ResponseNamespace = "https://schemas.microsoft.com/sharepoint/soap/", 
    Use = SoapBindingUse.Literal, ParameterStyle = SoapParameterStyle.Wrapped)]
public XmlNode GetListItemChangesSinceToken(
    string listName,
    string viewName,
    XmlNode query,
    XmlNode viewFields,
    string rowLimit,
    XmlNode queryOptions,
    string changeToken,
    XmlNode contains
)

Параметры

  • listName
    Тип: System.String

    Строка, содержащая название или идентификатор GUID для списка. При выполнении запроса в таблице UserInfo, строка содержит UserInfo. Использование результатов GUID повысить производительность.

  • viewName
    Тип: System.String

    Строка, содержащая GUID для представления, определяющий представление для атрибутов представление по умолчанию, представленные с помощью параметров query, viewFieldsи rowLimit . Если этот аргумент не указано, подразумевается представление по умолчанию. Если он указан, значение параметра query, viewFieldsили rowLimit переопределяет эквивалентный параметр в представлении. Например если представления, указанного с помощью параметра viewFields которого настроено ограничение строк 100 строк, но параметр rowLimit содержит 1000, 1000 строк возвращаются в ответе.

  • query
    Тип: System.Xml.XmlNode

    Элемент Query , содержащий запрос, который определяет, какие записи возвращаемые и в какой порядке, который можно назначить объект System.Xml.XmlNode , как показано в следующем примере.

  • viewFields
    Тип: System.Xml.XmlNode

    Элемент ViewFields , которое указывает, какие поля для возврата в запросе и в каком порядке и могут быть назначены System.Xml.XmlNode объекта, как показано в следующем примере.

  • rowLimit
    Тип: System.String

    Строка, которая указывает количество элементов или строк для отображения на странице перед началом разбиение на страницы. Если задан, этот параметр переопределяет ограничение строк в представлении, указанного с помощью параметра viewName или строку предел, установленный в представление по умолчанию для списка.

  • queryOptions
    Тип: System.Xml.XmlNode

    Фрагмент XML в следующей форме, которая содержит отдельные узлы для различных свойств объекта SPQuery , который может быть назначен в объект System.Xml.XmlNode .

  • contains
    Тип: System.Xml.XmlNode

    Содержит элемент, который определяет настраиваемую фильтрацию для запроса и могут быть назначены System.Xml.XmlNode объекта, как показано в следующем примере.

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

Тип: System.Xml.XmlNode
Фрагмент XML в следующей форме, которая возвращает последнее изменение маркер и элемента и может быть назначены объект System.Xml.XmlNode :

<listitems MinTimeBetweenSyncs="0" RecommendedTimeBetweenSyncs="180" MaxBulkDocumentSyncSize="500" 
   AlternateUrls="http://MyServer/,http://zinzinzin/" EffectivePermMask="FullMask" 
   xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" 
   xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema" 
   xmlns="https://schemas.microsoft.com/sharepoint/soap/">
   <Changes LastChangeToken="1;3;b0c07dce-e4c7-45a9-8b7f-0d5339f69633;633247934080930000;70853">
   </Changes>
   <rs:data ItemCount="2">
      <z:row ows_Attachments="0" ows_LinkTitle="MyItem1" ows_MetaInfo="3;#" ows__ModerationStatus="0" 
         ows__Level="1" ows_Title="MyItem1" ows_ID="3" ows_owshiddenversion="2" 
         ows_UniqueId="3;#{9153FDD3-7C00-47E9-9194-956BB20AAA8D}" ows_FSObjType="3;#0" 
         ows_Created_x0020_Date="3;#2007-08-31T21:34:59Z" ows_Created="2007-08-31T21:34:59Z" 
         ows_FileLeafRef="3;#3_.000" ows_FileRef="3;#sites/MyWebSite/Lists/MyList/3_.000" 
         ows_ServerRedirected="0" />
      <z:row ows_Attachments="0" ows_LinkTitle="MyItem2" ows_MetaInfo="5;#" ows__ModerationStatus="0" 
         ows__Level="1" ows_Title="MyItem2" ows_ID="5" ows_owshiddenversion="3" 
         ows_UniqueId="5;#{5BDBB1C0-194D-4878-B716-E397B0C1318C}" ows_FSObjType="5;#0" 
         ows_Created_x0020_Date="5;#2007-08-31T21:43:23Z" ows_Created="2007-08-31T21:43:23Z" 
         ows_FileLeafRef="5;#5_.000" ows_FileRef="5;#sites/MyWebSite/Lists/MyList/5_.000" 
         ows_ServerRedirected="0" />
         ...
   </rs:data>
</listitems>

Замечания

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

Свойство

Определение

MinTimeBetweenSyncs

Представляет минимальное время между инициированных пользователем или автоматической синхронизации. Значение представляет время в минутах.

Примечание

Клиенты должны учитывать это значение, даже если пользователь начинает синхронизацию вручную. То есть если это задано значение 5 минут, клиенты должны отправлять только один запрос от каждого 5 минут даже в том случае, если несколько раз нажатии кнопки «Отправить/получить».

RecommendedTimeBetweenSyncs

Представляет минимальное рекомендуемое количество времени между операциями синхронизации. В частности, это следует учитывать для автоматической синхронизации. Клиенты должны никогда не автоматическая синхронизация более часто. Инициированные пользователем синхронизации может переопределять значение этого интервала.

MaxBulkDocumentSyncSize

Общий размер содержимого синхронизацию клиенту. Значение по умолчанию — 500 МБ. Вы получаете URL-адрес и метаданные для каждого документа, когда вызов GetListItemChangesSinceToken, но затем нужно выполнить команду HTTP GET для получения содержимого документа. Установка этого значения в высокой может привести к снижению производительности.

AlternateUrls

Альтернативные URL-адреса перечислены в следующем порядке зон, разделенных запятыми: интрасеть, по умолчанию, экстрасеть, Интернет, пользовательская.

EffectiveBasePermissions

Разрешения для списка, возвращаемые SPList.EffectiveBasePermissions.ToString().

Примеры

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

Dim listService As New Web_Reference_Folder.Lists()
listService.Credentials = System.Net.CredentialCache.DefaultCredentials
listService.Url = "http://MyServer/MyWebSite/_vti_bin/Lists.asmx"

Dim getListName As XmlNode = listService.GetList("MyCalendar")
Dim listName As String = getListName.Attributes("Name").Value

Dim getFirstToken As XmlNode = listService.GetListItemChangesSinceToken(listName, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing)
Dim currentToken As String = getFirstToken.ChildNodes(1).Attributes("LastChangeToken").Value

label1.Text = currentToken + ControlChars.Lf

Dim strEditItemTitle As String = "My New Title"
Dim strBatchEdit As String = "<Batch OnError='Continue'><Method ID='0' Cmd='Update'>" + 
    "<Field Name='Title'>" + strEditItemTitle + "</Field>" + 
    "<Field Name='ID'>2</Field>" + 
    "<Field Name='EventDate'>2007-10-11T14:00:00Z</Field>" + 
    "<Field Name='EndDate'>2007-10-12T14:00:00Z</Field>" + 
    "</Method></Batch>"

Dim doc = New System.Xml.XmlDocument()
doc.LoadXml(strBatchEdit)
Dim editUpdates As XmlNode = doc.DocumentElement

Try
    listService.UpdateListItems(listName, editUpdates)
    Catch ex1 As System.Web.Services.Protocols.SoapException
        MessageBox.Show((ex1.Message + ControlChars.Lf + ex1.Detail.InnerText + ControlChars.Lf + ex1.StackTrace))
End Try

Dim getSecondToken As XmlNode = listService.GetListItemChangesSinceToken(listName, Nothing, Nothing, Nothing, Nothing, Nothing, currentToken, Nothing)

currentToken = getSecondToken.ChildNodes(1).Attributes("LastChangeToken").Value
label1.Text += currentToken + ControlChars.Lf

Dim strNewItemTitle As String = "My New Item"

Dim strBatchNew As String = "<Batch OnError='Continue'><Method ID='0' Cmd='New'>" + 
    "<Field Name='ID'>New</Field>" + 
    "<Field Name='Title'>" + strNewItemTitle + "</Field>" + 
    "<Field Name='EventDate'>2007-10-2T14:00:00Z</Field>" + 
    "<Field Name='EndDate'>2007-10-3T14:00:00Z</Field>" + 
    "</Method></Batch>"

doc = New System.Xml.XmlDocument()
doc.LoadXml(strBatchNew)
Dim addUpdates As XmlNode = doc.DocumentElement

Try
    listService.UpdateListItems(listName, addUpdates)
    Catch ex2 As System.Web.Services.Protocols.SoapException
        MessageBox.Show((ex2.Message + ControlChars.Lf + ex2.Detail.InnerText + ControlChars.Lf + ex2.StackTrace))
End Try

Dim getThirdToken As XmlNode = listService.GetListItemChangesSinceToken(listName, Nothing, Nothing, Nothing, Nothing, Nothing, currentToken, Nothing)

currentToken = getThirdToken.ChildNodes(1).Attributes("LastChangeToken").Value
label1.Text += currentToken
Web_Reference_Folder.Lists listService = new Web_Reference_Folder.Lists();
listService.Credentials = System.Net.CredentialCache.DefaultCredentials;
listService.Url = "http://MyServer/MyWebSite/_vti_bin/Lists.asmx";

XmlNode getListName = listService.GetList("MyCalendar");
string listName = getListName.Attributes["Name"].Value;

XmlNode getFirstToken = listService.GetListItemChangesSinceToken(listName, null, null, null, null, null, null, null);
string currentToken = getFirstToken.ChildNodes[1].Attributes["LastChangeToken"].Value;

label1.Text = currentToken + "\n";

string strEditItemTitle = "My New Title";
string strBatchEdit = "<Batch OnError='Continue'><Method ID='0' Cmd='Update'>" +
    "<Field Name='Title'>" + strEditItemTitle + "</Field>" +
    "<Field Name='ID'>2</Field>" +
    "<Field Name='EventDate'>2007-10-11T14:00:00Z</Field>" +
    "<Field Name='EndDate'>2007-10-12T14:00:00Z</Field>" +
    "</Method></Batch>";

XmlDocument doc = new System.Xml.XmlDocument();
doc.LoadXml(strBatchEdit);
XmlNode editUpdates = doc.DocumentElement;

try
{
    listService.UpdateListItems(listName, editUpdates);
}
catch (System.Web.Services.Protocols.SoapException ex1)
{
    MessageBox.Show(ex1.Message + "\n" + ex1.Detail.InnerText + "\n" + ex1.StackTrace);
}

XmlNode getSecondToken = listService.GetListItemChangesSinceToken(listName, null, null, null, null, null, currentToken, null);

currentToken = getSecondToken.ChildNodes[1].Attributes["LastChangeToken"].Value;
label1.Text += currentToken + "\n";

string strNewItemTitle = "My New Item";

string strBatchNew = "<Batch OnError='Continue'><Method ID='0' Cmd='New'>" +
    "<Field Name='ID'>New</Field>" +
    "<Field Name='Title'>" + strNewItemTitle + "</Field>" +
    "<Field Name='EventDate'>2007-10-2T14:00:00Z</Field>" +
    "<Field Name='EndDate'>2007-10-3T14:00:00Z</Field>" +
    "</Method></Batch>";

doc = new System.Xml.XmlDocument();
doc.LoadXml(strBatchNew);
XmlNode addUpdates = doc.DocumentElement;

try
{
    listService.UpdateListItems(listName, addUpdates);
}
catch (System.Web.Services.Protocols.SoapException ex2)
{
    MessageBox.Show(ex2.Message + "\n" + ex2.Detail.InnerText + "\n" + ex2.StackTrace);
}

XmlNode getThirdToken = listService.GetListItemChangesSinceToken(listName, null, null, null, null, null, currentToken, null);

currentToken = getThirdToken.ChildNodes[1].Attributes["LastChangeToken"].Value;
label1.Text += currentToken;

См. также

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

Lists класс

Элементы Lists

Пространство имен WebSvcLists