Question

I have a method that adds a SiteColumn to an existing ContentType:

addFieldToContentType: function(fieldSTR, contentTypeSTR, successFUN) { var clientContextOBJ = (csListBuilder.contextURL != "") ? new SP.ClientContext(csListBuilder.contextURL) : new SP.ClientContext.get_current(); var webContextOBJ = clientContextOBJ.get_web();

//get content types
var contentTypesARY = clientContextOBJ.get_site().get_rootWeb().get_contentTypes(); 
clientContextOBJ.load(contentTypesARY);

clientContextOBJ.executeQueryAsync(function() {
    var numeratorOBJ = contentTypesARY.getEnumerator();
    var loopBLN = true;
    var contentTypeOBJ;

    //loop through all content types to get to our wanted one
    while (numeratorOBJ.moveNext() && loopBLN == true) {
        contentTypeOBJ = numeratorOBJ.get_current();
        loopBLN = (contentTypeOBJ.get_name() == contentTypeSTR) ? false : true;
    }   

    //Build the field Info and add it to the content type object
    var fieldOBJ = clientContextOBJ.get_site().get_rootWeb().get_fields().getByInternalNameOrTitle(fieldSTR);           
    var infoOBJ = new SP.FieldLinkCreationInformation();
    infoOBJ.set_field(fieldOBJ);

    contentTypeOBJ.get_fieldLinks().add(infoOBJ)        
    contentTypeOBJ.update();

    clientContextOBJ.executeQueryAsync(successFUN, function(senderOBJ, argsOBJ){
        if(csListBuilder.alertErrorsBLN) {
            alert('Failed: ' + argsOBJ.get_message());
        } else {
            console.log('Failed: ' + argsOBJ.get_message());
        }               
    });

}, null);       

},

If you do that manually via GUI there is the option "Update all content types inheriting from this type?" How can I do this programmatically via JSOM? Is there a way to do it automatically (with just adding a flag)?

Was it helpful?

Solution

Try adding the parameter true to the content type update call. Change that line of your code to:

contentTypeOBJ.update(true);
Licensed under: CC-BY-SA with attribution
Not affiliated with sharepoint.stackexchange
scroll top