Ошибка построения типа контента в SP 2007 - PullRequest
0 голосов
/ 09 июня 2011

У меня есть обработчик событий, который ловит событие ItemAdding и меняет тип содержимого на лету. Это мой код для построения типа контента:

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.FieldLinks.Add (fieldLink);,

Я получаю ArgumentNullException: значение не может быть нулевым. Имя параметра: г

Кто-нибудь знает, что это значит, или может видеть, что я делаю неправильно? Заранее спасибо!

Трассировка стека:

в Microsoft.SharePoint.SPField.UpdateCore (Boolean bToggleSealed) в Microsoft.SharePoint.SPField.Update () at ChangeContentTypeEventHandler.ChangeContentTypeEventHandler.AddField (SPContentType & contentType, String fieldType, String fieldName) в ChangeContentTypeEventHandler.ChangeContentTypeEventHandler.ItemAdding (свойства SPItemEventProperties)

1 Ответ

0 голосов
/ 09 июня 2011

Ваша ошибка отсутствует в вашем текущем коде.Это дальше вниз по трассе стека.Можете ли вы опубликовать полную трассировку стека?

Редактировать:

Хорошо, с полным стеком трассировки это означает, что тип контента используется в данный момент.Скорее всего, вам нужно указать каскадные параметры.http://msdn.microsoft.com/en-us/library/ms474878.aspx

, например contentType.Update (true, true)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...