Я пытался программным образом воспроизвести поведение редактирования свойств поля типа контента на экране управления сайтом SharePoint и безуспешного выбора радиокнопки «Требуется» с помощью метода «UpdateContentType» веб-службы WSS 3.0. .
Первой трудностью была проблема с документацией MSDN о том, что поля должны быть типа FieldRef, тогда как на самом деле они должны иметь тип поля ( ссылка ). Добавление полей и удаление полей работает нормально после исправления, но обновление полей, похоже, не работает вообще. (Следует также отметить, что я следовал рекомендации по предыдущей ссылке, чтобы использовать Method="2"
для обновления полей, но это ничего не меняет, и использование значений метода, отличных от 1 для добавления или отличных от 3 для удаления, также работает правильно).
Вот вызов веб-службы (слегка измененный для удобства чтения со строками вместо объектов XmlNode):
SharePointWebServices.Webs webService = new SharePointWebServices.Webs();
webService.Url = "http://mysharepointserver/site";
webService.UseDefaultCredentials = true;
webService.UpdateContentType(
@"0x01005A089D9EC8A382458FB1F6C72096D52A",
@"<ContentType />",
@"<Fields />",
@"<Fields><Method ID=""1""><Field Name=""SomeField"" ID=""{8a4803c4-6545-4a7a-804d-237eebff0ce3}"" Required=""TRUE"" Hidden=""FALSE"" ReadOnly=""FALSE"" PITarget="""" PIAttribute="""" PrimaryPIAttribute="""" Aggregation="""" Node="""" /></Method></Fields>",
@"<Fields />");
После вызова поле все еще обязательное = "ЛОЖЬ".
Быстрый просмотр сборки stssoap.dll показывает, что свойство «Required», по-видимому, игнорируется в процессе обновления. Это нормальное поведение? Если да, то каков рекомендуемый метод программного изменения поля «Обязательно» из кода клиента (не выполняется на сервере SharePoint)?
Любая помощь будет принята с благодарностью.