Обновление CAML работает, но данные не меняются (Sharepoint 2007) - PullRequest
2 голосов
/ 20 января 2011

Я пытался создать программу пакетного обновления для сайта MOSS на основе примера MSDN здесь: http://msdn.microsoft.com/en-us/library/cc404818.aspx. К сожалению, хотя запрос на обновление выполняется без ошибок, данные в спискене меняется.

Вот пакетная команда, которую я использую:

<Method ID="3767">
  <SetList>8468cf0a-7e10-439c-a9b4-4197543e7b38</SetList>
  <SetVar Name="Cmd">Save</SetVar>
  <SetVar Name="ID">3767</SetVar>
  <SetVar Name="Date_x0020_of_x0020_Birth1">1971-12-18T00:00:00Z</SetVar>
</Method>

После запуска команды пакетного обновления:

string batchReturn = web.ProcessBatchData(batch);
returns:
<Results>
  <Result ID="3767" Code="0"></Result>
</Results>

Основной номер версии в спискеэлемент увеличивается, но в данные в поле данных не вносятся никакие изменения: Date_x0020_of_x0020_Birth1

Я в тупике.

Дополнительные сведения: Date_x0020_of_x0020_Birth1 - это новое поле, добавленное к типу содержимого по умолчанию для этого списка,Это поле DateTime.Он заменяет оригинальное поле Date_x0020_of_x0020_Birth (теперь имеет отображаемое имя «Дата рождения (текст)»), которое было текстовым полем, из-за того, что оно содержит значения до 01.01.1900.Пакетное обновление заключается в копировании дат из текстового поля в новое поле DateTime, где это возможно.

Единственное, о чем я могу подумать, это то, что я использую:

<SetVar Name="Cmd">Save</SetVar>

Возможно, яМне нужна команда «Обновить» или «Сохранить», поэтому я попробовал это:

<Method ID="1" Cmd="Update">
  <Field Name='ID'>3767</Field>
  <Field Name="Date_x0020_of_x0020_Birth1">1971-12-18T00:00:00Z</Field>
</Method>

Но это возвращает:

<Results>37671971-12-18T00:00:00Z<Result ID="1" Code="-2130575350">
  <ErrorText>Invalid URL Parameter

  The URL provided contains an invalid Command or Value. Please check the URL again.    
  </ErrorText>
</Result>
3767Date_x0020_of_x0020_Birth1
<Result ID="1" Code="-2147023673">
<ErrorText>The operation failed because an unexpected error occurred. (Result Code: 0x800704c7)</ErrorText>
</Result>
</Results>

1 Ответ

1 голос
/ 21 января 2011

«Обновление» - это правильное CMD, и похоже, что обновление происходит нормально (обновление номера версии).

Это просто покидает поле, и это, вероятно, «Имя», которое вы используете.

Вы пытались использовать префикс urn (urn: schemas-microsoft-com: office: office # Date_x0020_of_x0020_Birth1)

Можете ли вы попробовать обновить другое поле, например заголовок.(urn: schemas-microsoft-com: office: office # Title)

Если это не помогло, вы можете попробовать использовать UpdateListItems для lists.asmx

...