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)
Output (Backend)
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
View original source
https://www.servicenow.com/community/developer-articles/updating-the-list-collector-dynamically/ta-p/2324198