2010-10-11 3 views
7

J'essaie simplement d'ajouter un texte simple ou d'un champ lien hypertexte vers un élément de liste dans sharepoint 2007.valeur de réglage sur place Programmatically pour sharepoint listitem

Je peux ajouter le champ sans problème:

list.Fields.Add("MyField",SPFieldType.Text, false); 

Et ça se voit bien sur ma liste d'articles. Cependant, peu importe de quelle manière j'essaie, je ne peux pas programmer une valeur pour le champ. J'ai essayé:

list.items[0]["MyField"] = "text"; 

et moi avons essayé le chargement dans un champ:

SPField field = list.items[0].Fields["MyField"]; 

et le mettre là, et le réglage de la valeur par défaut et la mise à jour, mais rien que si jamais arrive.

Je termine toujours mes blocs de code avec list.update(); ou si je travaille sur l'élément lui-même item.update(); donc je ne manque pas au moins ça. Quelqu'un peut-il me dire ce que je fais mal?

Merci

+0

Les ContentTypes sont-ils activés dans la liste? – cement

+0

Non, ils ne le sont pas. – Dynde

Répondre

10

Essayez:

SPListItem item = list.items[0]; 
item["MyField"] = "text"; 
item.Update(); 

Bien qu'il semble équivalent, le code ci-dessus ne sont pas la même chose que:

list.items[0]["MyField"] = "text"; 
list.items[0].Update(); 

Pour plus d'informations, consultez here et here pour les personnes qui ont documenté le même comportement.

+1

Pourquoi diable gâcheraient-ils les indexeurs si mal? :/ – Dynde

+0

@Dynde Ils ne le font pas. Ce n'est pas différent si un type de valeur a été retourné et modifié. C'est juste qu'un objet * new * est renvoyé. –

3

Pourriez-vous essayer cette option pour ajouter un nouveau champ et définir une valeur par défaut? Code non testé. laissez-moi savoir comment ça se passe.

SPFieldText fldName = (SPFieldText)list.Fields.CreateNewField(SPFieldType.Text.ToString(), "mycolumn"); 
fldName.DefaultValue = "default"; 
list.Fields.Add(fldName); 
list.Update(); 
+0

Même accord - champ créé avec succès - aucune valeur du tout ... – Dynde

+0

Étrange !! Testez le code et cela fonctionne bien pour moi. – Shoban

0

De tout ce qui précède, il semble que vous essayez de définir la valeur du champ dans un gestionnaire d'événements de liste et vous définissez la valeur au point d'ajouter ou de mettre à jour l'événement article. Si c'est le cas, vous devez considérer AfterProperties. Souvenez-vous que nous avons des événements * et * ed et en cas d'événements * nous devons travailler avec BeforeProperties et AfterProperties.

J'espère que cela aide!

Questions connexes