2010-09-16 11 views
0

J'ai réussi à mettre à jour l'un des champs (qui était de type booléen) de infopath pour l'élément de bibliothèque utilisant l'objet sharepoint Modèle comme s'il s'agissait d'un élément de liste.comment mettre à jour le champ d'élément de bibliothèque de formulaire infopath par programme?

Mais pour un autre champ qui est de type texte, le même code est simplement exécuté mais ne change pas la valeur du champ !!!!

J'utilise le code suivant, qui fonctionne pour ce champ booléen mais pour un autre champ de type string, je ne sais pas pourquoi il ne fonctionne pas. Une idée ?

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

Merci,

Nikhil

+0

Got, je devais DECLAR SPListItem et le mettre au lieu de modifier directement collection d'éléments de la liste. –

Répondre

0

je devais déclarer SPListItem et le mettre au lieu de modifier directement collection d'éléments de la liste.

0

Ce n'est pas une réponse à votre question (vous avez déjà trouvé la solution vous-même), mais vous pouvez placer vos objets SPSite et SPWeb dans un bloc d'utilisation. Dans votre exemple de code, vous ne les jetez pas, ce qui entraîne une fuite de mémoire. La bonne façon serait comme ceci:

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

Oui, merci de l'avoir signalé. –