6

我有一个可以包含 CustomContentType 的自定义列表。这就是我创建新项目的方式:

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

问题是,当我在此之后查看我的列表时,我看到:

在此处输入图像描述

当我通过网络浏览器进入列表并手动创建内容类型时,一切都很好。(这意味着标题是“根”而不是 ID)。

4

3 回答 3

5

谢谢两位的回答!

解决方案是两种答案的混合。此外,您必须重新加载列表:

            //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();
于 2011-11-11T15:52:51.940 回答
1

“名称”字段对应于文件名。尽管您在列标题中看到了什么,但 1125_.000 是列表项的文件名,如果您不提供该文件名,则会自动生成:

rootItem["Name"] = "myname";

“名称”是一个内置字段。

于 2011-11-11T15:15:28.310 回答
0

尝试先设置内容类型 ID,然后执行 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(); 
于 2011-11-11T15:16:10.817 回答