logo

NJP

Updating the List Collector Dynamically

Import · Sep 21, 2020 · article

Hi,

In this article, I will show you how we can automatically select the values in the list collector variable.

Requirement: When you select a group, under user list collector, select all the group members dynamically.

Create 2 reference fields in your catalog item

  • Group : Reference field (reference to sys_user_group)
  • Members: List collector field (reference to sys_user_grmember)

OnChange Client Script on Group field

function onChange(control, oldValue, newValue, isLoading) {
   if (isLoading || newValue == '') {
      return;
   }
    //pass the group to SI and get members of that group
    var ga = new GlideAjax("getSelectedGroupMembers");
    ga.addParam("sysparm_name","getMembers");
    ga.addParam("sysparm_group",newValue); //pass the group sys_id to SI
    ga.getXML(parseResponse);   
}
function parseResponse(response) {
    var answer =  response.responseXML.documentElement.getAttribute("answer");
    if(answer !=0) {
        answer=answer.split(",");
        g_form.clearValue("members");
        g_form.setValue("members",answer);
    } else {
        g_form.clearValue("members");
    }
}

Script Include

Name: getSelectedGroupMembers

Active: True

Client Callable: True

var getSelectedGroupMembers = Class.create();
getSelectedGroupMembers.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    getMembers:function() {
        var group = this.getParameter("sysparm_group").toString();
        var gr = new GlideRecord("sys_user_grmember");
        gr.addQuery("group",group); //query the group members based on selected group
        gr.query();
        var members=[];
        while(gr.next()) {
            members.push(gr.getValue("user"));
        }
        if(members.length>0)
            return members.toString();
        else
            return 0; 
    },
    type: 'getSelectedGroupMembers'
});

Output (Service Portal)

image

Output (Backend)

image

Let me know if you have any questions in the comments below.

Mark the article as helpful and bookmark if you found it useful.

Regards,Asif

2020 ServiceNow Community MVP

View original source

https://www.servicenow.com/community/developer-articles/updating-the-list-collector-dynamically/ta-p/2324198