2011-11-11 13 views
6

Ho un elenco personalizzato che può contenere un CustomContentType. Questo è come genero un nuovo elemento:Come impostare il nome di un nuovo SPListItem al livello di programmazione?

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

Il problema è che quando sto guardando la mia lista dopo questo vedo che:

enter image description here

Quando vado alla lista via un browser web e creare il tipo di contenuto manualmente, tutto va bene. (Il che significa che il titolo è "root" e non l'ID).

risposta

5

Grazie a entrambi per le risposte!

La soluzione era una miscela di entrambe le risposte. Inoltre è necessario ricaricare la lista:

  //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

Il campo "nome" corrisponde al nome file. Nonostante quello che si vede nel titolo della colonna, il 1125_.000 è il nome del file della voce di elenco, che viene generato automaticamente se non si fornisce uno:

rootItem["Name"] = "myname"; 

"Nome" è un campo incorporato.

0

Provare a impostare l'ID del tipo di contenuto prima di eseguire rootItem.update(). Imposta il contenuto del tuo campo dopo quello.

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