Search code examples
sharepointsharepoint-2013web-partssharepoint-clientobject

Set SharePoint 2013 Shared document WebPart property (JSLink) in javascript object model


I want to change JSLink property for shared document webpart in javascript.

is there any way to set jslink property ?

ex.

documentsList.set_title("My title");

i can set the title but is there any way to set jslink ?


Solution

  • The following example demonstrates how to set Web Part JSLink property via SharePoint JSOM API:

    var pageUrl = _spPageContextInfo.serverRequestPath;       //current page url
    var webPartId = 'ab9149d6-8204-460a-9ecc-4219481ff8ca';   //<-- specify web part id
    var jsLinkUrl = '~sitecollection/Style Library/tasks.js'; //<-- specify JSLink url
    setupJsLink(pageUrl, webPartId,jsLinkUrl,
      function(){
          console.log('JSLink has been saved');
      },
      function(sender, args) {
          console.log(args.get_message());
      });  
    

    where

    function setupJsLink(pageUrl, wpId,jsLinkUrl,success,error)
    {
        var context = SP.ClientContext.get_current();
        var page = context.get_web().getFileByServerRelativeUrl(pageUrl);
        var wpm = page.getLimitedWebPartManager(SP.WebParts.PersonalizationScope.shared);
        var webpartDef = wpm.get_webParts().getById(new SP.Guid(wpId));
        var webpart = webpartDef.get_webPart();
        var properties = webpart.get_properties();
        properties.set_item("JSLink", jsLinkUrl);
        webpartDef.saveWebPartChanges();
        context.executeQueryAsync(
            function () {
              success();                  
            }, 
            error);
    }