2010-10-11 14 views
7

Staram się po prostu dodać prosty tekst lub pole hiperłącze do elementu listy w SharePoint 2007.Programowo ustawienie wartości pola dla SharePoint ListItem

mogę dodać pole żadnego problemu:

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

I pokazuje się dobrze na moich pozycjach na liście. Jednak bez względu na sposób, w jaki próbuję, nie mogę programowo ustawić wartości dla pola. Próbowałem:

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

i starałem ładowania w polu:

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

i ustawienie go tam, a ustawienie wartości domyślnej i aktualizacji, ale nic, co tak się nie dzieje.

Zawsze kończę moje bloki kodu za pomocą list.update(); lub jeśli działam na samym elemencie item.update(); więc przynajmniej tego nie brakuje. Czy ktoś może mi powiedzieć, co robię źle?

Dzięki

+0

Czy włączono ContentTypes na liście? – cement

+0

Nie, nie są. – Dynde

Odpowiedz

10

Spróbuj:

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

Chociaż wydaje się równoważne, powyższy kod nie jest taki sam jak:

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

Aby uzyskać więcej informacji, zobacz here i here dla ludzi, którzy mają udokumentowane to samo zachowanie.

+1

Dlaczego, na litość boską, zepsułyby tak bardzo indeksatory? :/ – Dynde

+0

@Dynde Oni nie. Nie różni się to od tego, czy typ wartości został zwrócony i zmodyfikowany. Po prostu zwracany jest * nowy * obiekt. –

3

można spróbować to za dodanie nowego pola i ustawienie wartości domyślnej? Niewyestrażony kod. Daj mi znać jak idzie.

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

Taka sama transakcja - pole zostało pomyślnie utworzone - brak wartości ... – Dynde

+0

Dziwne !! Przetestuj kod i działa dobrze dla mnie. – Shoban

0

ze wszystkich powyższej dyskusji wynika, że ​​próbujesz ustawić wartość pola w przewodnika lista zdarzeń i ustawiania wartości w punkcie Dodawanie lub aktualizowanie elementu zdarzenia. W takim przypadku należy rozważyć AfterProperties. Pamiętaj, że mamy * ing i * ed events, aw przypadku * ing events musimy pracować z BeforeProperties i AfterProperties.

Mam nadzieję, że to pomoże!

Powiązane problemy