Sharepoint 2010 — сделайте поля заголовка, описания и ключевых слов обязательными в библиотеке изображений с помощью server-object-model

#sharepoint #sharepoint-2010 #sharepointfoundation2010 #sharepoint-object-model

#sharepoint #sharepoint-2010 #sharepointfoundation2010 #sharepoint-object-model

Вопрос:

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

Комментарии:

1. Вам нужно установить эти поля как требуемые для списка . Поэтому попробуйте получить SPField из списка и установить SPField.Required значение true

2. не повезло, это не те поля, которые я создал. они поставляются с определением библиотеки изображений. Я пробовал разные способы получения ссылок на SPField, но пока ничего не получалось…

Ответ №1:

Вот ответ….

 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();
  

Ответ №2:

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

 SPContentType ct = web.Lists["*ListName*"].ContentTypes["*ContentTypeName*"];
SPFieldLinkCollection flinks = ct.FieldLinks;
flinks["*ColumnName*"].Required = true;
ct.update();
  

Комментарии:

1. пробовал, он жалуется, что поле описания недоступно в библиотеке изображений… Он действительно существует, не уверен, как обрабатывать поле описания.

Ответ №3:

Это должно сработать:

 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();
  

Комментарии:

1. Это возвращает поля библиотеки, требуемые для экземпляра списка, но не для типа содержимого! Я неправильно понял ваш вопрос!

Ответ №4:

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

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