2010-09-16 3 views
0

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

Но для другого поля, которое имеет текст типа, тот же код просто выполняется, но не меняет значение поля !!!!

Я использую следующий код, который работает для этого логического поля, но для другого поля типа string, не уверен, почему он не работает. Есть идеи ?

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; 
}); 

Спасибо,

Нихилу

+0

Получил это, я должен был объявить SPListItem и установить его вместо прямого изменения коллекции элементов списка. –

ответ

0

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

0

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

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

Да, спасибо, что указали это. –

 Смежные вопросы

  • Нет связанных вопросов^_^