2017-10-19 5 views
1

残りを使用してリストアイテムのページレイアウトを変更するにはどうすればよいですか?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

フィールドがReadOnly

としてマークされているので、SharePointのREST APIを介してPublishingPageLayoutフィールドの値を更新するためにサポートされていない回避策

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

i番目のJSOM/CSOM APIでは、ReadOnly属性でマークされたフィールドを更新することができます。

+1

おかげ@Vadim、私はJSOMを使用してそれを行うことができました。 –

関連する問題