Fab
Fab

Reputation: 954

Add group to list using SharePoint 2010 JSOM

Can someone give me an example of adding a SharePoint group to a list using the javascript client object model. I was able to create groups and add them to the site but I haven't seen any documentation on adding the groups to a list? I know how to do this via c# but not javascript.

Upvotes: 2

Views: 3048

Answers (2)

Fab
Fab

Reputation: 954

function getGroupByName(groupName, completeFunction) {

        if (groupName == null) {
            throw new Error("Group Name cannot be null");
        }

        var rv = null;
        var currentContext = SP.ClientContext.get_current();
        var currentWeb = currentWeb = currentContext.get_web();
        var allGroups = currentWeb.get_siteGroups();

        currentContext.load(allGroups);

        currentContext.executeQueryAsync(getGroupByName_Success, getGroupByName_Failed);

        function getGroupByName_Success() {


            var groupEnumerator = allGroups.getEnumerator();

            while (groupEnumerator.moveNext()) {

                rv = groupEnumerator.get_current();

                var groupTitle = rv.get_title();

                if (groupTitle == groupName) {
                    groupFound = true;
                    break;
                }
            }

            if (groupFound == false) {
                rv = null;
            }

            completeFunction(rv);
        }

        function getGroupByName_Failed(sender, args) {
            alert("Error Occurred: " + args.get_message() + "\n" + args.get_stackTrace());
        }

    }

Upvotes: 0

Vadim Gremyachev
Vadim Gremyachev

Reputation: 59348

How to grant permissions for Group in List via CSOM (JavaScript) in SharePoint 2013

The following example demonstrates how to grant Contribute permissions for group Approvers in list:

   var context = SP.ClientContext.get_current();
   var web = context.get_web(); 

   var list = web.get_lists().getByTitle(listTitle);
   var group = web.get_siteGroups().getByName("Approvers");

   var roleDef = web.get_roleDefinitions().getByType(SP.RoleType.contributor);
   var roleDefBindings = SP.RoleDefinitionBindingCollection.newObject(context);
   roleDefBindings.add(roleDef);
   list.get_roleAssignments().add(group,roleDefBindings);
   list.update();

   context.load(group);
   context.load(list);
   context.load(roleDef);
   context.executeQueryAsync(
     function () {

         console.log('For group ' + group.get_title() + ' has been granted ' + roleDef.get_name() + ' permissons in List ' + list.get_title());  
     },
     function (sender, args) {
        console.log("Error: " + args.get_message());
     }
   );

Since SP.GroupCollection does not contain the method getByName in SharePoint 2010, use the method SP.GroupCollection.getById(id) instead to return Group client object:

var group = web.get_siteGroups().getById(16); //get Approvers group by Id

Upvotes: 2

Related Questions