How to apply dynamic filter to reference field in UI Page.

Abhijit4
Mega Sage

Hi Everyone,

I have requirement to apply dynamic filter on reference field in UI Page.

I have managed to access that variable value in client script of that UI Page but I am not sure how to access that  value and apply dyanmic filte to reference field,

Client script :

var ParsedURL=document.referrer.parseQuery();// to take parameters from parent url

if(parsedURL['sys_id']){

var sys_id=decodeURI(parsedURL['sys_id']

}

 

HTML

<g:ui_reference id='referenceTest' table='module' />

Here I want to add query attribute and want to include dynamic filter with sys_id variable.


Something like,

<g:ui_reference id='referenceTest' table='module' query='Number='+sys_id />

or

<g:ui_reference id='referenceTest' table='module' query='Number='+${sys_id} />

 

What is the correct way to use client script variable in HTML and apply dynamic filter?

Thanks in advance.

 

 

 

 

 

 

By marking my response as correct or helpful, you contribute to helping future readers with similar issues.
Regards,
Abhijit
ServiceNow MVP

1 ACCEPTED SOLUTION

Rajesh Kannan G
ServiceNow Employee
ServiceNow Employee

Hi,

If you only want the referer URL you can try this,

<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
	<g:evaluate jelly="true">
		var referrer = GlideTransaction.get().getRequest().getHeader("Referer");
		var query = "active=true";
		if(!gs.nil(referrer)) {
			var url = new GlideURL(referrer);	
			if(url)
				query = query+"^kb_knowledge_base=" + url.get('sys_id');
		}
		query;
	</g:evaluate>
	<span>Query : $[query]</span>
</j:jelly>

Explanation: Fetch referer from request header, parse it using GlideURL, read referer url parameter using GlideURL.get to create your query. Now you can pass the query to g_uireference.

Regards,

Rajesh

View solution in original post

8 REPLIES 8

Hi,

please try this; give name attribute as well

Update as below

<g:ui_reference name="jiraNumber" id="jiraNumber" table="u_nowjira" />

<script>
var releaseSysId='';
var parsedURL = document.referrer.parseQuery();
if (parsedURL['sys_id']) {
releaseSysId = decodeURI(parsedURL['sys_id']);
}
alert(releaseSysId);

var a = document.getElementById('sys_display.jiraNumber');

a.setAttribute('name','QUERY:u_nowrelease'+releaseSysId);

</script>

Regards
Ankur

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

Rajesh Kannan G
ServiceNow Employee
ServiceNow Employee

Hi,

If you only want the referer URL you can try this,

<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
	<g:evaluate jelly="true">
		var referrer = GlideTransaction.get().getRequest().getHeader("Referer");
		var query = "active=true";
		if(!gs.nil(referrer)) {
			var url = new GlideURL(referrer);	
			if(url)
				query = query+"^kb_knowledge_base=" + url.get('sys_id');
		}
		query;
	</g:evaluate>
	<span>Query : $[query]</span>
</j:jelly>

Explanation: Fetch referer from request header, parse it using GlideURL, read referer url parameter using GlideURL.get to create your query. Now you can pass the query to g_uireference.

Regards,

Rajesh

Thanks Rajesh. Your logic was suitable for my problem and it worked with some adjustments.
By marking my response as correct or helpful, you contribute to helping future readers with similar issues.
Regards,
Abhijit
ServiceNow MVP

Hi,

It would be nice if you share the adjustment and script so that it would be helpful to all

Regards
Ankur

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader