7

我试图简单地将一个简单的文本或超链接字段添加到 sharepoint 2007 中的列表项。

我可以添加字段没问题:

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

它在我的列表项上显示得很好。但是,无论我尝试哪种方式,我都无法以编程方式为该字段设置值。我试过:

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

我尝试加载到一个字段中:

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

并将其设置在那里,设置默认值并更新,但没有发生任何事情。

我总是用 list.update(); 完成我的代码块。或者如果我正在对项目本身进行操作 item.update(); 所以我至少没有错过这一点。谁能告诉我我做错了什么?

谢谢

4

4 回答 4

10

尝试:

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

虽然看起来等价,但上面的代码并不等同于:

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

有关更多信息,请参阅此处此处了解记录相同行为的人员。

于 2010-10-11T14:11:11.327 回答
3

你可以试试这个来添加一个新字段并设置一个默认值吗?未经测试的代码。让我知道事情的后续。

SPFieldText fldName = (SPFieldText)list.Fields.CreateNewField(SPFieldType.Text.ToString(), "mycolumn");
fldName.DefaultValue = "default";
list.Fields.Add(fldName);
list.Update();
于 2010-10-11T07:28:47.037 回答
1

我一直发现最好的方法是直接获取对列表项的引用并专门更新,而不是使用索引器路由。就像富人的第一个例子提到的那样。

http://www.sharepointdevwiki.com/display/public/Updating+a+List+Item+programmatically+using+the+object+model

于 2010-10-11T18:26:20.937 回答
0

从上面的所有讨论中,您似乎正在尝试在列表事件处理程序中设置字段值,并且您正在在项目添加或项目更新事件中设置值。如果是这种情况,那么您需要考虑 AfterProperties。请记住,我们有 *ing 和 *ed 事件,如果发生 *ing 事件,我们需要使用 BeforeProperties 和 AfterProperties。

我希望这有帮助!

于 2010-10-14T16:08:18.437 回答