使用CAML/jQuery将多条记录更新为Sharepoint(批量更新)

Updating multiple records with CAML/jQuery to Sharepoint (Batch updating)

本文关键字:更新 Sharepoint 记录 CAML jQuery 使用      更新时间:2023-09-26

我正在尝试使用jQuery和CAML更新Share Point中的多条记录。我可以用这段代码轻松地更新一条记录,但对于这个项目,我需要一次更新20个产品。我想我可以循环调用这个函数20次,但我认为必须有一个更优雅的解决方案,有望在一个请求中完成任务。

每个调查有20个选择框,名为"Prod_1"、"Prod_2"、…、,"Prod_20"。

function saveProducts() {
        var sList = "ProductData"
        var i = 1;
        var sQry = "";
        sQry += "<Batch OnError='Continue'>";
        sQry += "   <Method ID='1' Cmd='Update'>";
        sQry += "     <Field Name='ID'>" + $("#uniqueID").val() + "</Field>";
        sQry += "     <Field Name='Offered'>" + $("#Prod_1").val() + "</Field>";
        sQry += "   </Method>";
        sQry += "</Batch>";
        var request = "";
        request += "<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'";
        request += " xmlns:xsd='http://www.w3.org/2001/XMLSchema'";
        request += " xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>";
        request += " <soap:Body>";
        request += " <UpdateListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'>";
        request += " <listName>" + sList + "</listName>";
        request += " <updates>" + sQry + "</updates>";
        request += " </UpdateListItems>";
        request += " </soap:Body>";
        request += "</soap:Envelope>";
        $.ajax({
            async: false, url: sURL, type: "POST", dataType: "xml", data: request, contentType: "text/xml; charset='"utf-8'"",
            beforeSend: function (xhr) { xhr.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/sharepoint/soap/UpdateListItems"); },
            complete: function processSaveProducts(xData, status) {
                //alert("Save Status: " + status);
            }
        });
    }

有没有一种方法可以通过一次更新而不是运行此代码20次来做到这一点?谢谢

您可以在同一<Batch>:中嵌套多个<Method>节点

<Batch OnError="Continue" ListVersion="1" 
ViewName="270C0508-A54F-4387-8AD0-49686D685EB2">
   <Method ID="1" Cmd="Update">
      <Field Name="ID">4<Field>
      <Field Name="Field_Name">Value</Field>
   </Method>
   <Method ID="2" Cmd="Update">
      <Field Name="ID" >6</Field>
      <Field Name="Field_Name">Value</Field>
   </Method>
</Batch>

更多信息:https://msdn.microsoft.com/en-us/library/lists.lists.updatelistitems(v=office.12).aspx