我正在尝试简单地将一个简单的文本或超链接字段添加到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();所以我至少不会错过这一点。谁能告诉我我做错了什么?
由于
答案 0 :(得分:10)
尝试:
SPListItem item = list.items[0];
item["MyField"] = "text";
item.Update();
虽然看似相同,但上述代码与以下代码不同:
list.items[0]["MyField"] = "text";
list.items[0].Update();
答案 1 :(得分:3)
您可以尝试添加新字段并设置默认值吗?未经测试的代码。让我知道事情的后续。
SPFieldText fldName = (SPFieldText)list.Fields.CreateNewField(SPFieldType.Text.ToString(), "mycolumn");
fldName.DefaultValue = "default";
list.Fields.Add(fldName);
list.Update();
答案 2 :(得分:1)
我总是发现最好的路径是直接获取对列表项的引用并进行具体更新,而不是使用索引器路由。就像富人的第一个例子一样提到。
答案 3 :(得分:0)
从上面的所有讨论中可以看出,您正在尝试在列表事件处理程序中设置字段值,并且您要在项目添加或项目更新事件中设置值。如果是这种情况,那么您需要考虑AfterProperties。请记住,我们有* ing和* ed事件,如果遇到事件,我们需要使用BeforeProperties和AfterProperties。
我希望这有帮助!