Как обновить поле элемента библиотеки форм Infopath программно? - PullRequest
0 голосов
/ 16 сентября 2010

Мне удалось обновить одно из полей (которое имело тип boolean) из infopath для элемента библиотеки с использованием модели объекта sharepoint, как если бы это был элемент списка.

Но для другого поля, имеющего тип 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; 
});

Спасибо,

Nikhil

Ответы [ 2 ]

0 голосов
/ 18 сентября 2010

Это не ответ на ваш вопрос (вы уже сами нашли решение), но вы можете поместить свои объекты SPSite и SPWeb в блок использования.В вашем примере кода вы не утилизируете их, что приводит к утечке памяти.Правильный путь будет выглядеть так:

SPSecurity.RunWithElevatedPrivileges(delegate()
{
    using (SPSite site = new SPSite("http://sharepointsite"))
    {
        using (SPWeb web = site.OpenWeb())
        {
            // the rest of your code
        }
    }
});
0 голосов
/ 16 сентября 2010

Мне пришлось объявить SPListItem и установить его вместо непосредственного изменения коллекции элементов списка.

...