如何以编程方式设置新SPListItem的名称?

时间:2011-11-11 14:46:54

标签: c# sharepoint-2010 splistitem splist

我有一个自定义列表,可以包含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

当我通过webbrowser进入列表并手动创建内容类型时,一切正常。 (这意味着标题是“根”而不是ID)。

3 个答案:

答案 0 :(得分: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();

答案 1 :(得分:1)

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

rootItem["Name"] = "myname";

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

答案 2 :(得分: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();