【问题标题】:How to update list items in SharePoint Library Sub Folders Using SPServices And JavaScript如何使用 SPServices 和 JavaScript 更新 SharePoint 库子文件夹中的列表项
【发布时间】:2020-10-13 17:00:11
【问题描述】:

在 SharePoint 中并使用 SPServices,我正在尝试更新子文件夹中上传的文件的内容 这是图像,也是我要更新的文件元数据。 库结构如下所示:

列表名称:共享文档

文件夹 #1 - 文档 子文件夹 #1 - 采购 文件 #1 - 上传的文件 文件 #2

所以基本上我想更新 requestID、文件类型等

有人可以帮忙吗?谢谢!

这是我的代码

                var oldFolderName = "Procurement";
                $().SPServices({
                    operation: "GetListItems",
                    async: false,
                    listName: 'Documents',
                    CAMLViewFields: "<ViewFields Properties='True' />",
                    CAMLQuery: "<Query><Where><Eq><FieldRef Name='FSObjType' /><Value Type='Integer'>1</Value></Eq></Where></Query>",
                    CAMLQueryOptions: "<QueryOptions><IncludeMandatoryColumns>FALSE</IncludeMandatoryColumns></QueryOptions>",
                    completefunc: function (xData, Status) {
                        $(xData.responseXML).SPFilterNode('z:row').each(function () {
                            var existingFolderName = $(this).attr("ows_FileLeafRef").split(";#")[1];
                            if (existingFolderName == oldFolderName) {
                                var Folder_ID = $(this).attr("ows_ID");
                                $().SPServices({
                                    operation: "UpdateListItems",
                                    async: false,
                                    batchCmd: "Update",
                                    listName: 'Documents',
                                    valuepairs: [["Title", "Working"], ["requestID", "Working"]],
                                    ID: Folder_ID,
                                    completefunc: function (xData, Status) {
                                        console.log("Folder Name Updated Successfully...");
                                    }
                                });
                            }
                        });
                    }
                });

但代码只更新子文件夹元数据(采购)而不是采购文件夹中的列表。

这才是我真正的意思

【问题讨论】:

    标签: sharepoint sharepoint-2013 spservices


    【解决方案1】:

    无需先使用 SPService 循环文件夹再更新文件元数据,而是使用 Rest API getfilebyserverrelativeurl 获取文件并更新元数据,如下所示:

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js" type="text/javascript"></script>
    <script type="text/javascript">
    updateFileMetadata();
    function updateFileMetadata() {
            var def = jQuery.Deferred();
            
            var restSource= _spPageContextInfo.webAbsoluteUrl+"/_api/Web/getfilebyserverrelativeurl('/sites/Sitename/Shared%20Documents/Procurement/filename')/ListItemAllFields";
                    
            var itemPayload = {"__metadata": {"type":"SP.Data.Shared_x0020_DocumentsItem"},"Title":"Updated","requestID","Working","filetype":"Working"};
            var dfd = jQuery.Deferred();
            $.ajax(
            {
                url: restSource,
                method: "POST",
                contentType: "application/json;odata=verbose",
                data: JSON.stringify(itemPayload),
                headers:
                    {
                        "Accept": "application/json;odata=verbose",
                        "X-RequestDigest": $('#__REQUESTDIGEST').val(),
                        "X-HTTP-Method":"MERGE",
                        "If-Match": "*"
    
                    },
                success: function (data) {
                    alert("Success");
                    dfd.resolve(data);
                },
                error: function (err) {
                    dfd.reject(err);
                    alert("Error");
                }
            });
            return dfd.promise();
        }
    </script>
    

    对于_api/Web/getfilebyserverrelativeurl:

    url 值应该是

    /sites/sitename/Shared%20Documents/Procurement/filename 在这种情况下,

    如果它是一个根站点,并且站点 url 中没有“站点”字符,则更改如下:

    /Shared%20Documents/Procurement/文件名

    【讨论】:

    • 感谢@Jerry_MSFT。我会尝试解决方案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-31
    • 1970-01-01
    • 2017-06-18
    • 1970-01-01
    相关资源
    最近更新 更多