首页 文章

如何以编程方式更新infopath表单库项目字段?

提问于
浏览
0

我成功地能够使用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 回答

  • 0

    这不是您的问题的答案(您已经自己找到了解决方案),但您可能希望将SPSite和SPWeb对象放在使用块中 . 在您的示例代码中,您没有处理它们,这会导致内存泄漏 . 正确的方法是这样的:

    SPSecurity.RunWithElevatedPrivileges(delegate()
    {
        using (SPSite site = new SPSite("http://sharepointsite"))
        {
            using (SPWeb web = site.OpenWeb())
            {
                // the rest of your code
            }
        }
    });
    
  • 0

    我必须声明SPListItem并设置它而不是直接修改列表项集合 .

相关问题