2012-05-08 49 views
1

我正在使用下面的代碼批量更新SharePoint列表項目,並試圖弄清楚我是否也可以使用批量更新更新該項目的內容類型。這是爲Sharepoint 2010,我只能使用web服務。我無法在任何地方找到例子。使用UpdateListItems網絡服務方法更新listitem內容類型

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的Web服務的內容類型。 在SharePoint 2010中實現它的唯一方法是使用客戶端對象模型。 Lists.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>