2017-10-19 116 views
1

如何使用rest更改列表項的頁面佈局?如何在SharePoint REST中設置列表項的頁面佈局?

下面的代碼在過程中被使用,並且代碼被執行,但是頁面佈局不會改變。請指教。

itemProperties['PublishingPageLayout'] = { 
      'type': 'SP.FieldUrlValue', 
       __metadata: { type: 'SP.FieldUrlValue' }, 
       Description: 'Custom Content Layout', 
       Url: '/_catalogs/masterpage/CustomPage.aspx' 
      }; 
function updateDocLibItem(url, itemType, itemProperties, etagId) { 
    itemProperties["__metadata"] = { "type": itemType }; 
    return $.ajax({ 
     url: url, 
     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": etagId 
     }, 
     }); 
} 

回答

1

它不支持通過SharePoint REST API更新PublishingPageLayout字段值,因爲字段被標記爲ReadOnly

解決方法

JSOM API可以利用代替更新頁面佈局所證明如下:

var itemIdToUpdate = 3; 

var ctx = SP.ClientContext.get_current(); 
var listPages = ctx.get_web().get_lists().getByTitle("Pages"); 
var pageItem = listPages.getItemById(itemIdToUpdate); 

var val = new SP.FieldUrlValue(); 
val.set_url("/_catalogs/masterpage/ArticleLeft.aspx"); 
val.set_description("Blank Web Part page"); 
pageItem.set_item("PublishingPageLayout",val); 
pageItem.update(); 

ctx.executeQueryAsync(
    function() { 
     console.log("Updated");  
    }, 
    function(sender,args){ 
    console.log(args.get_message()); 
    }); 

W使用JSOM/CSOM API可以更新標有ReadOnly屬性的字段。

+1

謝謝@Vadim,我設法使用JSOM來完成它。 –

相關問題