- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
yesterday
Hi,
How can we filter the list of user in list collector based on what is selected to another variable,
variable 1 = group
variable 2 = goal is to show list of member only based on selected in variable 1.
In my mind I need to use onchange and script include.
I saw this post that are sample to populate in reference qualifier : Solved: How to show only users from respective group in re... - ServiceNow Community
I applying this concept but I try to add onchange to pass the value of sysid of the group into script include so in reference qualifier will display members.
script include:
but not its not working.
Anythoughts how to show member of the group in catalog using onchange/script include/reference qualifier ?
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
yesterday
Since you want to filter i.e. restrict users no script include required, do this
1) 2nd variable list collector should refer to sys_user
2) 1st variable should be reference type pointing to sys_user_group
3) use this advanced ref qualifier
4) Ensure you give correct variable name in below script and variable attributes
javascript: var query;
var arr = [];
var gr = new GlideRecord("sys_user_grmember");
gr.addQuery("group", current.variables.groupVariable);
gr.query();
while (gr.next()) {
arr.push(gr.getValue('user'));
}
query = 'sys_idIN' + arr.toString();
query;
4) give this in variable attributes of 2nd variable
ref_qual_elements=groupVariable
If my response helped please mark it correct and close the thread so that it benefits future readers.
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
yesterday
@Jeck Manalo,
If you still want to go with script include approach
try this
1. Modify you script include, refer image
2. On your List collector variable, Use reference qualifier like this ->
(Make sure to adjust the variable name)
This way you can call your script include directly in the reference qualifier, no need to use onChange client script and no need to make your script include GlideAjax enabled
Outcome ->
-------------------------------------------------------------------------------------------------------------------------------------------
Please mark my response helpful and accept as solution
Thanks & Regards
Mayank
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
yesterday - last edited yesterday
Inside the while loop use gr.getDisplayValue('user')
Refer below for sample script
If this helped to answer your query, please mark it helpful & accept the solution.
Thanks,
Bhuvan
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
yesterday
not work,
maybe the problem is using my onchange script not in script include.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
yesterday
Hi @Jeck Manalo,
How are you setting the value in the client script, could you please share image of that?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
yesterday
Hi @Jeck Manalo ,
You’re passing sys_id of the group, but in your query you’re filtering on group.name. That won’t match!
script include
getMembers: function () {
var groupId = this.getParameter('sysparm_group_id');
var arr = [];
if (!groupId)
return arr.toString();
var gr = new GlideRecord("sys_user_grmember");
gr.addQuery("group", groupId); // usee sys id not name
gr.query();
while (gr.next()) {
arr.push(gr.user.toString()); // return user sys_ids
}
return arr.toString();
}
and if you are settign the value using the client script try this
ga.getXMLAnswer(function(response) {
var users = response.split(',');
g_form.setValue('user_variable_name', users.join(',')); // populate list collector
});
if youa are setting the referance qualifer then try this scriptjavascript: 'user IN (SELECT user FROM sys_user_grmember WHERE group=' + current.variables.group + ')'