Если вы создали свой список и тип содержимого программно (с помощью XML-файлы), есть несколько мест, где вам нужно, чтобы сделать изменения:
- В вашем ContentType.CT.Columns .xml (установите атрибут Required = "FALSE" в XML вашего элемента Field).
- В вашем ContentType.CT.xml (установите атрибут Required = "FALSE" в XML вашего элемента FieldRef)
- В файле schema.xml вашего списка, если раздел, найдите свое поле и установите атрибут к ложному.
Возможно, вы правильно это сделали. Однако schema.xml списка используется только тогда, когда создается список. Поэтому, если вы изменили schema.xml и развернули его, но без удаления и повторного создания списка ваши изменения будут бесполезны.
EDIT:
Если вы не можете удалить и заново создать свой список, вам придется писать код, который будет делать это программно (с помощью функции или эквивалент). Это будет делать трюк:
using (SPSite site = new SPSite("http://yoursite"))
{
using (SPWeb web = site.RootWeb)
{
SPList list = web.Lists.TryGetList("Your List");
if (list != null)
{
SPField fld = list.Fields[SPBuiltInFieldId.RequiredField];
fld.Required = false;
fld.Update();
}
}
}
Спасибо, я изменил код немного, и это, кажется, работает отлично! метод обновления() должен быть вызван на содержание типа не поле. SPField fieldInContentType = list.ContentTypes [CONTENTTYPE] .Fields.GetFieldByInternalName (поле); ПолеInContentType.Required = false; list.ContentTypes [contentType] .Update(); –
Извините за ошибку , Я не тестировал этот код. :-) –