Я пытался создать программу пакетного обновления для сайта 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>