How to get a value from a table using client script

ragz
Tera Expert

Hi All,

I need to get a value from another table based on the department value .

I have a list called abc contacts . It has 3 columns and all are reference fields .

1) Department 2) Telecom contact 3) Department head

find_real_file.png

 

below script

var answer=response.responseXML.documentElement.getAttribute("answer");

I am getting the value of answer is Product Management so I need to get Department Head value Carmel Overfelt (example).

How to get that ?

find_real_file.png

1 ACCEPTED SOLUTION

lunkki
Tera Guru

Hello,
Not sure if I understood this correctly.
You can't use GlideRecord query on client side.


You need to create Script include:
name: u_getDepartmentHead

Client callable [x]

Script:

// create class
var u_getDepartmentHead = Class.create();
u_getDepartmentHead.prototype = Object.extendsObject(AbstractAjaxProcessor, {
	
	//function name
	getContact: function() {
		
		// search parameter for query
		var department = this.getParameter('sysparm_department');
	
		//query
		var gr = new GlideRecord('u_abc_contacts');
		gr.addQuery('u_department', department);
		gr.query();
		if (gr.next()) {
			//return data
			return gr.u_department_head;
		}
	}

});

 

Now you can create client script to get that data:


var department = g_form.getvalue('u_department'); 

var ga = new GlideAjax('u_getDepartmentHead'); //this is the script include
ga.addParam("sysparm_name", "getContact"); //this is the function within the script include
ga.addParam("sysparm_department", department);
ga.getXML(getResponse);


function getResponse(response) {
    //set u_department_head sys_id to variable data
    var data = response.responseXML.documentElement.getAttribute('answer'); 

    g_form.setValue("man", data);
}

View solution in original post

8 REPLIES 8

lunkki
Tera Guru

Hello,
Not sure if I understood this correctly.
You can't use GlideRecord query on client side.


You need to create Script include:
name: u_getDepartmentHead

Client callable [x]

Script:

// create class
var u_getDepartmentHead = Class.create();
u_getDepartmentHead.prototype = Object.extendsObject(AbstractAjaxProcessor, {
	
	//function name
	getContact: function() {
		
		// search parameter for query
		var department = this.getParameter('sysparm_department');
	
		//query
		var gr = new GlideRecord('u_abc_contacts');
		gr.addQuery('u_department', department);
		gr.query();
		if (gr.next()) {
			//return data
			return gr.u_department_head;
		}
	}

});

 

Now you can create client script to get that data:


var department = g_form.getvalue('u_department'); 

var ga = new GlideAjax('u_getDepartmentHead'); //this is the script include
ga.addParam("sysparm_name", "getContact"); //this is the function within the script include
ga.addParam("sysparm_department", department);
ga.getXML(getResponse);


function getResponse(response) {
    //set u_department_head sys_id to variable data
    var data = response.responseXML.documentElement.getAttribute('answer'); 

    g_form.setValue("man", data);
}

Hi Lunkki ,

 

I tiried the same but I am getting null value for data variable.

After I changed the department field type to String it is working fine .

Steph4
Kilo Contributor

I needed to do something similar and this code worked perfectly. THANK YOU!