簡體   English   中英

如何以編程方式更新信息路徑表單庫項目字段?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM