#sharepoint #events
#sharepoint #Мероприятия
Вопрос:
У меня есть обработчик событий, который перехватывает событие добавления элемента и изменяет тип контента «на лету». Это мой код для создания типа контента:
SPContentType baseContentType = web.AvailableContentTypes["Folder"];
SPContentType type = new SPContentType(baseContentType, web.ContentTypes, "Custom Folder");
// Add fields to new content type
AddField(ref type, "User", "Owner");
AddField(ref type, "DateTime", "Date");
AddField(ref type, "Text", "Description");
AddField(ref type, "Text", "Justification");
AddField(ref type, "User", "Users");
list.ContentTypes.Add(type);
list.Update();
..снип..
void AddField(ref SPContentType contentType, string fieldType, string fieldName)
{
SPField field = new SPField(contentType.Fields, fieldType, fieldName);
if (fieldName.Equals("Users"))
((SPFieldUser)field).AllowMultipleValues = true;
field.Update();
contentType.Fields.Add(field); // Exception thrown here
SPFieldLink fieldLink = new SPFieldLink(contentType.Fields[fieldName]);
contentType.FieldLinks.Add(fieldLink);
contentType.Update();
}
В строке: ContentType.Ссылки на поля.Добавить (ссылка на поле);,
Я получаю исключение ArgumentNullException: значение не может быть нулевым. Имя параметра: g
Кто-нибудь знает, что это значит, или может увидеть, что я делаю неправильно? Заранее спасибо!
Трассировка стека:
в Microsoft.SharePoint.SPField.UpdateCore (логическое значение bToggleSealed) в Microsoft.SharePoint.SPField.Обновление () в ChangeContentTypeEventHandler.ChangeContentTypeEventHandler.Добавьте поле (SPContentTypeamp; ContentType, String FieldType, String fieldName) в ChangeContentTypeEventHandler.ChangeContentTypeEventHandler.Добавление элементов (несмотря на свойства eventProperties)
Ответ №1:
Вашей ошибки нет в вашем текущем коде. Это дальше по трассировке стека. Можете ли вы опубликовать полную трассировку стека?
Редактировать:
Хорошо с полным стеком трассировки, это означает, что тип контента используется в данный момент. Что вам, скорее всего, нужно сделать, так это указать каскадные параметры. http://msdn.microsoft.com/en-us/library/ms474878.aspx
например, ContentType.Обновление (верно,true)
Комментарии:
1. Спасибо за ответ. Я добавил трассировку стека к исходному вопросу. Я внес некоторые изменения в код (немного изменил метод AddField), и теперь я получаю исключение SPException для field. Обновление (): эта функциональность недоступна для полей, не связанных со списком