The CreatorCon Call for Content is officially open! Get started here.

How to push multiple values in multiple line text field in catalog.

Community Alums
Not applicable

Hi All,

I have one cat item with 4 fields. Req for (List Collector) & UserId, Dept, Title (Multiline Text)

Please have a look below.

find_real_file.png

 

I will select Abel Tuter first in list collector, then it should populate corresponding values in the below three fields. After that i will select another user Abraham Lincoln, the it should populate corresponding values in below three fields with comma separated to the existing.

How can i achieve this. Here is my code, it is working for single selection not for multiple.

Client Script :

function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}

var getReqUser = g_form.getValue('requestd_for');
var ga = new GlideAjax('Populate_dept');
ga.addParam('sysparm_name', 'getUserDetails');
ga.addParam('sysparm_user_id', getReqUser);
ga.getXML(HelloWorldParse);

function HelloWorldParse(response) {
alert('In');
var answer = response.responseXML.documentElement.getAttribute("answer").split(',');
alert(answer);

g_form.setValue('uId', answer[0]);
g_form.setValue('ttle', answer[1]);
g_form.setValue('deprtmnt', answer[2]);
}
}

 

Script Include : 

var Populate_dept = Class.create();
Populate_dept.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getUserDetails: function() {
var userr = this.getParameter('sysparm_user_id');
var gr = new GlideRecord('sys_user');
gr.addQuery('sys_id', userr);
gr.query();
if (gr.next()) {
gs.log('Hi Sira');
return gr.user_name + ',' + gr.title + ',' + gr.department.toString();
}
},
type: 'Populate_dept'
});

 

Regards,

Sirraj

1 ACCEPTED SOLUTION

Even though you can't select multiple values at one time via this portal interface, the variable is still a list collector that is storing multiple values, so the script has to accommodate that.  The below client script will work.

function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}

var getReqUser = g_form.getValue('requestd_for');
var ga = new GlideAjax('Populate_dept');
ga.addParam('sysparm_name', 'getUserDetails');
ga.addParam('sysparm_user_id', getReqUser);
ga.getXML(HelloWorldParse);

function HelloWorldParse(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
answer = JSON.parse(answer);

g_form.setValue('uId', answer.user);
g_form.setValue('ttle', answer.title);
g_form.setValue('deprtmnt', answer.dept);
}
}

and the script include

var Populate_dept = Class.create();
Populate_dept.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getUserDetails: function() {
var obj = {};
obj.user = '';
obj.title = '';
obj.dept = '';
var userr = this.getParameter('sysparm_user_id');
var gr = new GlideRecord('sys_user');
gr.addQuery('sys_id', 'IN', userr);
gr.query();
while (gr.next()) {
if(obj.user == ''){
obj.user = gr.user_name.toString();
}
else{
obj.user = obj.user + ',' + gr.user_name.toString();
}
if(obj.title == ''){
obj.title = gr.title.toString();
}
else{
obj.title = obj.title + ',' + gr.title.toString();
}
if(obj.dept == ''){
obj.dept = gr.department.name.toString();
}
else{
obj.dept = obj.dept + ',' + gr.department.name.toString();
}
}
return JSON.stringify(obj);
},
type: 'Populate_dept'
});

View solution in original post

13 REPLIES 13

Even though you can't select multiple values at one time via this portal interface, the variable is still a list collector that is storing multiple values, so the script has to accommodate that.  The below client script will work.

function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}

var getReqUser = g_form.getValue('requestd_for');
var ga = new GlideAjax('Populate_dept');
ga.addParam('sysparm_name', 'getUserDetails');
ga.addParam('sysparm_user_id', getReqUser);
ga.getXML(HelloWorldParse);

function HelloWorldParse(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
answer = JSON.parse(answer);

g_form.setValue('uId', answer.user);
g_form.setValue('ttle', answer.title);
g_form.setValue('deprtmnt', answer.dept);
}
}

and the script include

var Populate_dept = Class.create();
Populate_dept.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getUserDetails: function() {
var obj = {};
obj.user = '';
obj.title = '';
obj.dept = '';
var userr = this.getParameter('sysparm_user_id');
var gr = new GlideRecord('sys_user');
gr.addQuery('sys_id', 'IN', userr);
gr.query();
while (gr.next()) {
if(obj.user == ''){
obj.user = gr.user_name.toString();
}
else{
obj.user = obj.user + ',' + gr.user_name.toString();
}
if(obj.title == ''){
obj.title = gr.title.toString();
}
else{
obj.title = obj.title + ',' + gr.title.toString();
}
if(obj.dept == ''){
obj.dept = gr.department.name.toString();
}
else{
obj.dept = obj.dept + ',' + gr.department.name.toString();
}
}
return JSON.stringify(obj);
},
type: 'Populate_dept'
});

Community Alums
Not applicable

I ll give a try and let you know Brad. Thanks for the script 🙂

Community Alums
Not applicable

Thank you Brad 🙂 It worked..!!

Regards,

Sirraj

Hi,

Seems similar to this question:

https://community.servicenow.com/community?id=community_question&sys_id=072b4de4dbf41450d82ffb243996198b

Regards
Ankur

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

Community Alums
Not applicable

Yes Ankur, we both only facing the issue. (ProjectMates).!

We will have a look and let you know the update:)

Thanks,

Sirraj