我成功地使用sharepoint对象模型从库 infopath 更新其中一个字段(类型为boolean),就好像它是一个列表项一样。
但是对于另一个text类型的字段,相同的代码只是被执行但不会改变字段值!
我正在使用以下代码,该代码适用于该布尔字段,但对于另一个字符串类型的字段,不确定它为什么不起作用。有什么想法吗?
SPSecurity.RunWithElevatedPrivileges(delegate()
{
SPWeb web;
SPSite site = new SPSite("http://sharepointsite");
web = site.OpenWeb();
SPList formLibList = web.Lists["FormLibraryName"];
SPQuery query = new SPQuery(); query.Query = "<Where><Eq><FieldRef Name='Title' /><Value Type='Text'>" + titleName + "</Value></Eq></Where>";
web.Site.WebApplication.FormDigestSettings.Enabled = false;
web.AllowUnsafeUpdates = true;
SPListItemCollection col = formLibList.GetItems(query);
if (col.Count > 0)
{
col[0]["CustomerName"] = "test customer name";
col[0].Update();
}
web.Site.WebApplication.FormDigestSettings.Enabled = true; web.AllowUnsafeUpdates = false;
});
谢谢,
尼基尔
答案 0 :(得分:0)
我必须声明SPListItem并设置它而不是直接修改列表项集合。
答案 1 :(得分:0)
这不是您问题的答案(您已经自己找到了解决方案),但您可能希望将SPSite和SPWeb对象放在使用块中。在您的示例代码中,您没有处理它们,这会导致内存泄漏。正确的方法是这样的:
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite site = new SPSite("http://sharepointsite"))
{
using (SPWeb web = site.OpenWeb())
{
// the rest of your code
}
}
});