Как программно установить имя нового SPListItem? - PullRequest
6 голосов
/ 11 ноября 2011

У меня есть пользовательский список, который может содержать CustomContentType. Вот как я создаю новый предмет:

//Create root folder
SPListItem rootItem = navigation.Items.Add();
SPContentType folderType = navigation.ContentTypes["ListLevel"];
rootItem[SPBuiltInFieldId.Title] = "root";
rootItem["ContentTypeId"] = folderType.Id;
rootItem.Update();

Проблема в том, что когда я смотрю на свой список после этого, я вижу, что:

enter image description here

Когда я захожу в список через веб-браузер и создаю тип контента вручную, все в порядке. (Это означает, что заголовок является «корнем», а не идентификатором).

Ответы [ 3 ]

5 голосов
/ 11 ноября 2011

Спасибо вам обоим за ответы!

Решение было смесью обоих ответов. Дополнительно вы должны перезагрузить список:

            //Create root folder
            SPListItem rootItem = navigation.Items.Add();
            SPContentType contentType = navigation.ContentTypes["ListLevel"];

            rootItem["ContentTypeId"] = contentType.Id;
            rootItem["Title"] = "root";
            rootItem.Update();
            navigation.Update();

            rootItem = navigation.GetItemById(rootItem.ID);
            rootItem["Name"] = "root";
            rootItem.Update();
1 голос
/ 11 ноября 2011

Поле «имя» соответствует имени файла.Несмотря на то, что вы видите в заголовке столбца, 1125_.000 - это имя файла элемента списка, которое генерируется автоматически, если вы его не указали:

rootItem["Name"] = "myname";

«Имя» является встроеннымполе.

0 голосов
/ 11 ноября 2011

Попробуйте сначала установить идентификатор типа контента, затем выполните rootItem.update (). После этого установите содержание поля.

//Create root folder 
SPListItem rootItem = navigation.Items.Add(); 
SPContentType folderType = navigation.ContentTypes["ListLevel"]; 
rootItem["ContentTypeId"] = folderType.Id; 
rootItem.Update(); 
rootItem[SPBuiltInFieldId.Title] = "root"; 
rootItem.Update(); 
...