我成功地能够使用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;
});
谢谢,
尼基尔
2 回答
这不是您的问题的答案(您已经自己找到了解决方案),但您可能希望将SPSite和SPWeb对象放在使用块中 . 在您的示例代码中,您没有处理它们,这会导致内存泄漏 . 正确的方法是这样的:
我必须声明SPListItem并设置它而不是直接修改列表项集合 .