使用UpdateListItems Web服务方法更新listitem内容类型

时间:2012-05-08 16:56:17

标签: sharepoint-2010

我正在使用下面的代码批量更新sharepoint列表项目,并试图找出是否还可以使用批量更新更新项目的内容类型。这适用于Sharepoint 2010,我只能使用webservices。我无法在任何地方找到一个例子。

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

3 个答案:

答案 0 :(得分:1)

如果不制作新版本,则无法使用SharePoint 2010的Web服务更新内容类型。 在SharePoint 2010中创建它的唯一方法是使用客户端对象模型。 Lists.UpdateListItems可以这样做,但一旦内容类型更新,就会添加新的文档版本。

参见参考:these thread

答案 1 :(得分:0)

似乎添加名称为“ContentType”的字段并为其提供内容类型名称的值确实有效。我不知道这是否得到支持。

答案 2 :(得分:0)

使用内容类型名称&amp;它将在SharePoint 2010中运行

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