ProcessBatchData – Attention à la casse

Voici un post très rapide concernant l’utilisation de SPWeb.ProcessBatchData. J’ai été surpris cette semaine de constater une erreur similaire sur plusieurs blogs. Voici un exemple très simple d’utilisation de ProcessBatchData :

using (SPSite site = new SPSite("http://shp-benj-dev/tests/pbd"))
            {
                using (SPWeb web = site.OpenWeb())
                {
                    SPList tasks = web.GetList(web.ServerRelativeUrl.TrimEnd('/') + "/Lists/Tasks");
                    StringBuilder sb = new StringBuilder();
                    sb.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
                    sb.Append("<ows:Batch OnError=\"Return\">");

                    SPListItemCollection items = tasks.Items;
                    foreach (SPListItem item in items)
                    {
                        sb.Append("<Method ID=\"" + item.ID + "\">");
                        sb.Append("<SetList Scope=\"Request\">" + tasks.ID + "</SetList>");
                        sb.Append("<SetVar Name=\"Cmd\">Save</SetVar>");
                        sb.Append("<SetVar Name=\"ID\">" + item.ID + "</SetVar>");
                        sb.Append("<SetVar Name=\"urn:schemas-microsoft-com:office:office#Title\">" + item.Title.ToUpper() + "</SetVar>");
                        sb.Append("</Method>");
                    }
                    sb.Append("</ows:Batch>");

                    string result = web.ProcessBatchData(sb.ToString());

                }
            }

Considérons la ligne 7 : sb.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); Cet exemple de code fonctionne. Vous le copiez-collez dans Visual Studio, ajoutez la référence vers Microsoft.SharePoint et modifiez l’URL de la Site Collection et ce code fonctionnera pour peu que vous ayez une liste Tasks dans votre Web site. En revanche modifiez la valeur UTF-8 par utf-8 et vous obtiendrez une magnifique ArgumentException lors de l’exécution de ProcessBatchData.

Faites attention lors des copy/paste depuis le Web. J’ai perdu un certain temps il y a quelques jours là dessus ;)

Add comment

biuquote
  • Comment
  • Preview
Loading

About me

After sudying at SUPINFO Indian Ocean and SUPINFO Montreal I am now Analyst Programmer at Ivanhoe Cambridge. 

Month List