2010-10-11 37 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。

我希望这有助于!