2010-10-11 11 views
7

Sto cercando di aggiungere semplicemente un testo semplice o un campo collegamento ipertestuale a una voce di elenco in SharePoint 2007.impostazione di programmazione valore di campo per SharePoint listitem

posso aggiungere il campo non è un problema:

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

E si mostra bene sui miei articoli della lista. Tuttavia, indipendentemente da che cosa provo, non posso impostare un valore per il campo al livello di programmazione. Ho provato:

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

e provato caricando in un campo:

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

e impostando lì, e impostando il valore predefinito e l'aggiornamento, ma nulla che cosa così accade mai.

Finisco sempre i miei blocchi di codice con list.update(); o se sto operando sull'oggetto stesso item.update(); quindi non mi manca almeno questo. Qualcuno può dirmi cosa sto facendo di sbagliato?

Grazie

+0

I tipi di contenuto sono abilitati nell'elenco? – cement

+0

No, non lo sono. – Dynde

risposta

10

Prova:

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

Anche se sembra equivalente, il codice di cui sopra non è la stessa:

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

Per ulteriori informazioni, vedere here e here per le persone che hanno documentato lo stesso comportamento.

+1

Perché diavolo avrebbero rovinato gli indicizzatori così male? :/ – Dynde

+0

@Dynde Non lo fanno. Questo non è diverso da se un tipo di valore è stato restituito e modificato. È solo che viene restituito un * nuovo * oggetto. –

3

Potresti provare questo per l'aggiunta di un nuovo campo e l'impostazione di un valore di default? Codice non testato fammi sapere come va.

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

Stessa offerta - campo creato con successo - nessun valore ... – Dynde

+0

Strano !! Prova il codice e funziona bene per me. – Shoban

0

Da tutto quanto detto sopra emerge che si sta cercando di impostare il valore di campo in un gestore elenco degli eventi e si sta impostando il valore al punto di aggiungere o aggiornare oggetto evento. In tal caso, è necessario considerare AfterProperties. Ricorda che abbiamo * gli eventi * e * ed in caso di * eventi dobbiamo lavorare con BeforeProperties e AfterProperties.

Spero che questo aiuti!

Problemi correlati