当前位置: 首页>>技术教程>>正文


使用REST API更新查找值

webfans 技术教程 , 去评论

问题描述

是否可以通过Rest API更新列表项的查找字段值?如果我使用$ select和$ expand,我可以检索字段值,但我找不到解释如何更新它的文档。

最佳解决方案

是的你可以。对于每个查找字段,列表都有一个隐含字段,用于保存目标列表中项目的ID。此隐式字段的名称是查找字段的名称加上Id。在Milind的回答中,查找字段被命名为State,目标列表中项目的ID为2.因此,当您使用REST API进行更新时,您将设置StateId = 2。

var call = jQuery.ajax({
    url: _spPageContextInfo.webAbsoluteUrl +
        "/_api/Web/Lists/getByTitle('Sales Opportunities')/Items(5)",
    type: "POST",
    data: JSON.stringify({
        "__metadata": { type: "SP.Data.Sales_x0020_OpportunitiesListItem" },
        StateId: 2
    }),
    headers: {
        Accept: "application/json;odata=verbose",
        "Content-Type": "application/json;odata=verbose",
        "X-RequestDigest": jQuery("#__REQUESTDIGEST").val(),
        "IF-MATCH": item.__metadata.etag,
        "X-Http-Method": "PATCH"
    }
});

次佳解决方案

它取决于Lookup字段值是否为多个,通过REST更新字段值时使用以下格式:

  • 单一查找值格式:LookupFieldName: LookupIdVal

  • 多种查找值格式:LookupFieldName: {"results":
    [LookupIdVal1,LookupIdVal2] }

例子

如何更新单个查找值

var itemProperties = {
        "__metadata": { "type": 'SP.Data.TasksListItem' }, 
        "ProjectId": 1
    }; 
updateListItem('Tasks',4,itemProperties,
   function(){    
   },
   function(error){
    console.log(JSON.stringify(error));
   }
);

如何更新多个查找值

var itemProperties = {
        "__metadata": { "type": 'SP.Data.TasksListItem' }, 
        "ProjectsId": {"results": [1,3] }
    }; 
updateListItem('Tasks',4,itemProperties,
   function(){    
   },
   function(error){
    console.log(JSON.stringify(error));
   }
);

哪里

function updateListItem(listName, itemId, itemProperties, success, failure) {

    $.ajax({
            url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getbytitle('" + listName + "')/items(" + itemId + ")",
            type: "POST",
            contentType: "application/json;odata=verbose",
            data: JSON.stringify(itemProperties),
            headers: {
                "Accept": "application/json;odata=verbose",
                "X-RequestDigest": $("#__REQUESTDIGEST").val(),
                "X-HTTP-Method": "MERGE",
                "If-Match": '*'
            },
            success: function (data) {
                success();
            },
            error: function (data) {
                failure(data);
            }
    });
}

参考

Manipulating list items in SharePoint Hosted Apps using the REST API

参考资料

本文由朵颐IT整理自网络, 文章地址: https://duoyit.com/article/2704.html,转载请务必附带本地址声明。