2010-10-11 15 views
7

Ich versuche, einen einfachen Text oder Hyperlink-Feld in Sharepoint zu einem Listenelement einfach hinzufügen 2007Programmatically Einstellung Feldwert für Sharepoint listitem

ich das Feld kein Problem hinzufügen:

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

Und es zeigt sich gut auf meiner Liste Artikel. Aber egal, wie ich es versuche, kann ich nicht programmgesteuert einen Wert für das Feld festlegen. Ich habe versucht:

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

und ich versuchte Laden in ein Feld:

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

und dort und das Setzen des Standardwerts und Aktualisierung, aber nichts, was so überhaupt passiert.

Ich beende meine Code-Blöcke immer mit list.update(); oder wenn ich mit dem Element selbst arbeite item.update(); also vermisse ich das nicht. Kann mir jemand sagen, was ich falsch mache?

Dank

+0

Sind ContentTypes in der Liste aktiviert? – cement

+0

Nein, sind sie nicht. – Dynde

Antwort

10

Versuchen:

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

Obwohl es gleichwertig scheint, der obige Code ist nicht das gleiche wie:

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

Weitere Informationen here und here für Menschen sehen, die dokumentiert das gleiche Verhalten.

+1

Warum in aller Welt würden sie die Indexer so durcheinander bringen? :/ – Dynde

+0

@Dynde Sie nicht. Dies ist nicht anders als wenn ein Werttyp zurückgegeben und geändert wurde. Es ist nur, dass ein * neues * Objekt zurückgegeben wird. –

3

Könnten Sie dies versuchen, ein neues Feld für das Hinzufügen und einen Standardwert einstellen? Nicht getesteter Code lass mich wissen wie es geht.

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

Gleicher Deal - erfolgreich erstellt - kein Wert ... – Dynde

+0

Seltsam !! Testen Sie den Code und es funktioniert gut für mich. – Shoban

0

Aus allen der obigen Diskussion scheint es, dass Sie das Feld Wert in einer Liste Event-Handler zu setzen versuchen, und Sie den Wert in Artikel setzen Hinzufügen oder Element Ereignis zu aktualisieren. Wenn dies der Fall ist, müssen Sie AfterProperties berücksichtigen. Denken Sie daran, dass wir Ereignisse und * ed-Ereignisse haben, und im Falle von Ereignissen müssen wir mit BeforeProperties und AfterProperties arbeiten.

Ich hoffe, das hilft!