2011-11-11 77 views
6

我有一個可以包含CustomContentType的自定義列表。這是我如何創建一個新項目:如何以編程方式設置新SPListItem的名稱?

//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並手動創建內容類型,everthing很好。 (這意味着標題是「根」而不是ID)。

回答

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

「名稱」字段對應於文件名。儘管你在列標題看到的,1125_.000是列表項,如果你不提供一個它是自動生成的文件名:

rootItem["Name"] = "myname"; 

「名稱」是一個內置的領域。

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(); 
相關問題