2012-05-08 1 views
1

Я выполняю пакетное обновление элементов списка точек доступа, используя приведенный ниже код, и пытаюсь выяснить, могу ли я также обновить тип содержимого элемента с помощью пакетного обновления. Это для Sharepoint 2010, и я могу использовать только веб-службы. Я нигде не смог найти пример.обновить тип содержимого listitem с использованием метода веб-службы UpdateListItems

public static void UpdateListItems(string SiteURL, string ListName, int[] ItemIDs, List<string> FieldNames, List<object> Values) 
    { 
     using (ListsSoapClient ls = GetListSoapClient(SiteURL)) 
     { 
      XDocument xDoc = new XDocument(new XElement("Batch")); 
      xDoc.Root.Add(new XAttribute("OnError", "Continue")); 
      xDoc.Root.Add(new XAttribute("PreCalc", "TRUE")); 

      int ID = 0; 

      for (int i = 0; i < ItemIDs.Count(); i++) 
      { 

       ID++; 
       XElement xMethod = new XElement("Method", 
        new XAttribute("ID", ID), 
        new XAttribute("Cmd", "Update"), 
        new XElement("Field", 
         new XAttribute("Name", "ID"), 
         ItemIDs[i] 
         ) 
        ); 

       for (int j = 0; j < FieldNames.Count(); j++) 
       { 
        xMethod.Add(new XElement("Field", 
            new XAttribute("Name", Functions.SPFieldName(FieldNames[j])), 
             Values[j] 
             ) 
           ); 
       } 

       xDoc.Root.Add(xMethod); 
      } 

      ls.UpdateListItems(ListName, xDoc.Root); 
     } 
    } 
+0

кажется, что добавление поля с именем «ContentType» и придавая ему значение имени типа контента работает. Я не знаю, поддерживается ли это или нет. –

ответ

1

Невозможно обновить тип контента с помощью веб-сервисов для SharePoint 2010 без создания новой версии. Единственный способ сделать это в SharePoint 2010 - использовать объектную модель клиента. List.UpdateListItems может это сделать, но как только тип содержимого будет обновлен, будет добавлена ​​новая версия документа.

См для справки: these thread

+0

На самом деле меня не интересовало создание новой версии. Я просто искал любой пример того, как это сделать. Ссылка, на которую вы ссылались, похоже, касается CopyIntoItems, которую я не пытался использовать, я пытался выполнить пакетное обновление существующих элементов. Я смог успешно это сделать. –

0

кажется, что добавление поля с именем «ContentType» и придавая ему значение имени типа контента работает. Я не знаю, поддерживается ли это или нет.

0

Используйте имя & типа контента он будет работать в SharePoint 2010

<Method ID='1' Cmd='New'><Field Name='Title'>134</Field><Field Name='ContentType'>ContentTypeNameHere</Field></Method>

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