Как задать имя нового разделяемого элемента программно?

#c# #sharepoint-2010 #splistitem #splist

#c# #sharepoint-2010 #расщепитель #расколоть #разделяемый элемент

Вопрос:

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

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

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

введите описание изображения здесь

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

Ответ №1:

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

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

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

Ответ №2:

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

 rootItem["Name"] = "myname";
  

«Name» — это встроенное поле.

Ответ №3:

Сначала попробуйте установить идентификатор типа контента, а затем выполните 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();