[英]how to update infopath form library item field programatically?
我成功地使用共享點對象Model來從庫項目的信息路徑中更新了字段之一(類型為boolean),就好像它是一個列表項一樣。
但是對於另一個文本類型的字段,只執行相同的代碼,但不會更改字段值!
我正在使用以下代碼,該代碼適用於該布爾字段,但適用於字符串類型的另一個字段,不確定為什么它不起作用。 任何想法 ?
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;
});
謝謝,
尼基爾
我必須聲明SPListItem並進行設置,而不是直接修改列表項集合。
這不是您問題的答案(您已經自己找到了解決方案),但是您可能希望將SPSite和SPWeb對象放在using塊中。 在示例代碼中,您沒有處置它們,這會導致內存泄漏。 正確的方法是這樣的:
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite site = new SPSite("http://sharepointsite"))
{
using (SPWeb web = site.OpenWeb())
{
// the rest of your code
}
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.