Sharepoint 2010 — сделать поля «Заголовок», «Описание» и «Ключевое слово» обязательными полями в библиотеке изображений с использованием объектной модели сервера

Я создаю функцию Sharepoint, с этой функцией связан приемник событий. В приемнике событий я создаю библиотеку документов и библиотеку изображений, используя объектную модель на стороне сервера. Я также добавляю новые настраиваемые столбцы (около 80) в эти вновь созданные библиотеки документов и изображений. Теперь я хочу изменить свойства полей «Описание», «Ключевые слова» и «Заголовок», которые по умолчанию создаются вместе с библиотекой изображений. Я хочу сделать эти поля обязательными. Как мне это сделать? Я пытался установить SPList.AllowContentTypes = true и попытаться изменить атрибуты этих полей, но это не работает (ни выдает ошибку, ни делает эти обязательные поля). Я также пытался получить доступ к типам контента и попытаться изменить атрибуты, используя SPContentType.FieldsLinks["Column_name"].Required и SPContentType.Fields["Column_name"].Required, но это дает мне ошибку. У кого-нибудь есть другие предложения?


person xgencoder    schedule 03.11.2011    source источник
comment
Вам необходимо установить эти поля в соответствии с требованиями для списка. Поэтому попробуйте получить SPField из списка и установить SPField.Required на true   -  person Dennis G    schedule 03.11.2011
comment
не повезло, это не те поля, которые я создал. они поставляются с определением библиотеки изображений. Пробовал разными способами получить ссылки на SPField, но пока ничего не получилось...   -  person xgencoder    schedule 03.11.2011


Ответы (4)


Вот ответ....

SPContentType ct = mypiclib.ContentTypes["Picture"];
SPFieldLinks titleLink = ct.FieldLinks["Title"];
SPFieldLinks descLink = ct.FieldLinks["comments"]; //internal name of Description
SPFieldLinks keywords = ct.FieldLinks["keywords"];
titlelink.Required = true;
descLink.Required = true;
keywords.Required = true;
ct.Update();
person xgencoder    schedule 04.11.2011

Можете ли вы рассказать нам об ошибке, которую вы получили при попытке использовать fieldlinks? Потому что это должно работать... Я сделал это так:

SPContentType ct = web.Lists["*ListName*"].ContentTypes["*ContentTypeName*"];
SPFieldLinkCollection flinks = ct.FieldLinks;
flinks["*ColumnName*"].Required = true;
ct.update();
person Tjassens    schedule 03.11.2011
comment
попробовал, он жалуется, что поле «Описание» недоступно в библиотеке изображений ... Оно действительно существует, не знаю, как обращаться с полем «Описание». - person xgencoder; 03.11.2011

Это должно помочь:

SPWeb yourWeb =  ... //assign your web
SPList yourPictureLibrary = ... //assign your picture library

web.AllowUnsafeUpdates = true;
yourPictureLibrary.Fields[SPBuiltInFieldId.Title].Required = true;
yourPictureLibrary.Fields[SPBuiltInFieldId.Description].Required = true;
yourPictureLibrary.Fields[SPBuiltInFieldId.Keywords].Required = true;
yourPictureLibrary.Update();
person Pedro Fonseca    schedule 03.11.2011
comment
Это получает те поля библиотеки, которые требуются для экземпляра списка, но не для типа содержимого! Я неправильно понял ваш вопрос! - person Pedro Fonseca; 04.11.2011

Параметр SPAllowContentTypes установить нельзя. Вместо этого вы можете попробовать установить ContentTypesEnabled.

У меня нет коробки 2010 года для тестирования, но если SPAllowContentTypes возвращает false Я думаю, вы пытаетесь изменить определение вашей библиотеки изображений в улье 14 (TEMPLATE\FEATURES\PictureLibrary\PicLib), чтобы получить то, что вам нужно. Смело ступайте туда.

person vinny    schedule 03.11.2011