Dynamic reference field filter in UI page
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-05-2021 02:15 AM
Hello Experts,
I am having one UI page in which one reference field filter is managed in <g:evaluate> tag as below,
This works fine while loading( it applies proper filter which we want) but now new requirement is to change that reference filter based on one checkbox selection which will be on same UI page.
Any help would be appreciated.
Thanks.
Regards,
Abhijit
ServiceNow MVP
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-05-2021 02:22 AM
Hi,
refer this example on how to set dynamic reference qualifier for <g:ui_reference> tag
Based on Source User Change I am setting the filter for 2nd tag
Enhance it for your example
HTML:
<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
<table>
<tr>
<td >Source</td>
<td><g:ui_reference id="source" name="source" table="sys_user" completer="AJAXTableCompleter" query="active=true" onChange="setUserFilter()" /></td>
</tr>
<tr>
<td>Target</td>
<td><g:ui_reference id="target" name="target" table="sys_user" completer="AJAXTableCompleter" onChange="clearFilter()"/></td>
</tr>
</table>
</j:jelly>
Client Script:
function setUserFilter() {
var sysIDSource = gel('source').value;
var UserLookUp = gel('lookup.target');
if(gel('target').value != ''){
document.getElementById('sys_display.target').value = '';
document.getElementById('target').value = '';
document.getElementById('targetLINKreplace').style.display = 'none';
}
var array = [];
var gr = new GlideRecord("sys_user");
gr.addQuery("sys_id", "!=", sysIDSource);
gr.addQuery('company.name', 'ACME Germany');
gr.query();
while(gr.next()) {
array.push(gr.sys_id.toString());
}
UserLookUp.setAttribute('onclick',"mousePositionSave(event); reflistOpen( 'target', 'not', 'sys_user', '', 'false','QUERY:active=true', 'sys_idIN" + array+ "', '')");
}
function clearFilter(){
document.getElementById('sys_display.source').value = '';
document.getElementById('source').value = '';
document.getElementById('sourceLINKreplace').style.display = 'none';
}
Regards
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-07-2021 12:04 AM
Hi Ankur,
Thanks for the reply.
I am getting filter dynamically as expected but when I am trying to select any of the record from pop up window then it is not getting selected.
Any help would be appreciated.
Thanks.
Regards,
Abhijit
ServiceNow MVP
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-07-2021 12:33 AM
Hi,
Did you see any browser console error during the selection?
please share the screenshot
Regards
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-07-2021 04:11 AM
Hi Ankur,
Yes there is error in console.
Here is code screenshot,
Here is console error,
Any help would be appreciated.
Thanks.
Regards,
Abhijit
ServiceNow MVP