2010-10-11 39 views
7

我想簡單地在SharePoint中添加一個簡單的文本或超鏈接字段列表項2007爲SharePoint列表項編程設置字段值

我可以添加字段沒有問題:

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

它在我的清單上顯示得很好。 但是無論我嘗試哪種方式,我都無法以編程方式爲該字段設置值。我想:

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

,我試圖加載到一個字段:

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

並設置它在那裏,並設置什麼那麼發生在默認值和更新,但沒有。

我總是用list.update()完成我的代碼塊。或者如果我在項目本身上運行item.update();所以我至少不會錯過。誰能告訴我我做錯了什麼?

感謝

+0

在列表中是否啓用ContentTypes? – cement 2010-10-11 09:17:42

+0

不,他們不是。 – Dynde 2010-10-11 10:04:57

回答

10

嘗試:

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

雖然看上去相當的,上面的代碼是不一樣的:

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

欲瞭解更多信息,請參閱誰已經證明人herehere同樣的行爲。

+1

他們爲什麼會把索引器弄得那麼糟糕? :/ – Dynde 2010-10-12 05:49:05

+0

@Dynde他們沒有。這與返回和修改值類型沒有區別。只是返回一個* new *對象。 – 2012-11-29 00:19:08

3

你可以試試這個添加一個新的領域,並設置默認值?未經測試的代碼。讓我知道事情的後續。

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

相同的交易 - 現場成功創建 - 沒有價值... – Dynde 2010-10-11 08:03:47

+0

奇怪!測試代碼,它對我來說工作正常。 – Shoban 2010-10-11 08:22:24

0

從上面所有的討論,似乎您試圖設置列表中的事件處理程序中的字段值,你是在項目添加或項目設置的值更新事件。如果是這種情況,那麼你需要考慮AfterProperties。請記住,我們有* ing和* ed事件,如果發生事件,我們需要使用BeforeProperties和AfterProperties。

我希望這有助於!