OnLoad/onChange of assignment group value populate group members to list/long datatype field

Jay N
Tera Contributor

Hi Experts,

 

We have requirement to populate group members to a field when assignment group is changed or form loaded, this is on native UI Form. I tried client script and script include but users are not populated.

Request to share your inputs

 

 

JayN_1-1742385878437.png

 

Script include: GetGroupMembers

Client callable = True

 

var GetGroupMembers = Class.create();
GetGroupMembers.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
    getGroupMembers: function() {
        var groupId = this.getParameter('sys_id');
        var userList = [];
       
        var gr = new GlideRecord('sys_user_grmember');
        gr.addQuery('group', groupId);
        gr.query();
          while (gr.next()) {
            userList.push(gr.user.toString());
        }
         return userList.join(',');
    }
});
 
Client script: OnChange of assignement group
// Get the assignment group
    var assignmentGroup = g_form.getValue('u_iso_group');
    //alert('assignmentGroup'+assignmentGroup);
    if (assignmentGroup) {
        // GlideAjax to call a Script Include
        var ga = new GlideAjax('GetGroupMembers');
        ga.addParam('sys_id', assignmentGroup);
        ga.getXMLAnswer(function(response) {
            var users = response.responseXML.documentElement.getAttribute("answer");
            g_form.setValue('u_iso_group_members', users);
        });
    } else {
        g_form.setValue('u_iso_group_members', '');
    }
 
1 ACCEPTED SOLUTION

sunil maddheshi
Tera Guru

@Jay N 

Please try with below updated code:

var GetGroupMembers = Class.create();
GetGroupMembers.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
    getGroupMembers: function() {
        var groupId = this.getParameter('sysparm_sys_id');  // Fix parameter retrieval
        var userList = [];
       
        var gr = new GlideRecord('sys_user_grmember');
        gr.addQuery('group', groupId);
        gr.query();
        while (gr.next()) {
            userList.push(gr.user.toString());
        }
        return userList.join(',');
    }
});

Client script: 

// Get the assignment group
var assignmentGroup = g_form.getValue('u_iso_group');

if (assignmentGroup) {
    // GlideAjax to call a Script Include
    var ga = new GlideAjax('GetGroupMembers');
    ga.addParam('sysparm_name', 'getGroupMembers');  // Mandatory function name
    ga.addParam('sysparm_sys_id', assignmentGroup);  // Correct parameter name

    ga.getXMLAnswer(function(response) {
        if (response) {
            g_form.setValue('u_iso_group_members', response);  // Use response directly
        } else {
            g_form.setValue('u_iso_group_members', '');
        }
    });
} else {
    g_form.setValue('u_iso_group_members', '');
}

Please mark correct/helpful if this helps you!

View solution in original post

5 REPLIES 5

Shivalika
Mega Sage

Hello @Jay N 

 

You have not added the line 

ga.addParam('sysparm_name','getGroupMembers'); 

 

Also whole setting the value for the field, pass users.toString() and not only users. 

 

Please try above two things and let me know if this works for you. 

 

Kindly mark my answer as helpful and accept solution if it helped you in anyway. This will help me be recognized for the efforts and also move this questions from unsolved to solved bucket. 

 

Regards,

 

Shivalika 

 

My LinkedIn - https://www.linkedin.com/in/shivalika-gupta-540346194

 

My youtube - https://youtube.com/playlist?list=PLsHuNzTdkE5Cn4PyS7HdV0Vg8JsfdgQlA&si=0WynLcOw

NeEISQCY

sunil maddheshi
Tera Guru

@Jay N 

Please try with below updated code:

var GetGroupMembers = Class.create();
GetGroupMembers.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
    getGroupMembers: function() {
        var groupId = this.getParameter('sysparm_sys_id');  // Fix parameter retrieval
        var userList = [];
       
        var gr = new GlideRecord('sys_user_grmember');
        gr.addQuery('group', groupId);
        gr.query();
        while (gr.next()) {
            userList.push(gr.user.toString());
        }
        return userList.join(',');
    }
});

Client script: 

// Get the assignment group
var assignmentGroup = g_form.getValue('u_iso_group');

if (assignmentGroup) {
    // GlideAjax to call a Script Include
    var ga = new GlideAjax('GetGroupMembers');
    ga.addParam('sysparm_name', 'getGroupMembers');  // Mandatory function name
    ga.addParam('sysparm_sys_id', assignmentGroup);  // Correct parameter name

    ga.getXMLAnswer(function(response) {
        if (response) {
            g_form.setValue('u_iso_group_members', response);  // Use response directly
        } else {
            g_form.setValue('u_iso_group_members', '');
        }
    });
} else {
    g_form.setValue('u_iso_group_members', '');
}

Please mark correct/helpful if this helps you!

Thanks Sunil,

This code worked.

Hello @Jay N 

 

I have also given same modifications just haven't shared code. Is it in anyway working for you ? 

 

Kindly mark my answer as helpful and accept solution if it helped you in anyway. This will help me be recognized for the efforts and also move this questions from unsolved to solved bucket. 

 

Regards,

 

Shivalika 

 

My LinkedIn - https://www.linkedin.com/in/shivalika-gupta-540346194

 

My youtube - https://youtube.com/playlist?list=PLsHuNzTdkE5Cn4PyS7HdV0Vg8JsfdgQlA&si=0WynLcOwNeEISQCY