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

Hi,

No worries; Do let us know the update

Regards
Ankur

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

Community Alums
Not applicable

But that requirement got changed to this. There all the fields are list collector, but currently we kept one field "list collector" and other variables are "multiline text"

Regards,

Sirraj

Ct111
Tera Sage

for multiple values you need array or object....

 

Example take the below example where I populated multiple values

Script Include

var UserInfo = Class.create();
UserInfo.prototype = Object.extendsObject(AbstractAjaxProcessor, {


getUserInfo:function()

{

gs.log('Inside Script Include');

var obj = {};

var user = this.getParameter('sysparm_usr');



var gu = new GlideRecord('sys_user');
gu.addQuery('sys_id',user);
gu.query();

if(gu.next())
{

obj.title = gu.getValue('title');
obj.email = gu.getValue('email');


}

gs.addInfoMessage('Therefore the manager is '+gu.title+' and country is'+gu.email +'value inside ject'+obj);


var str = JSON.stringify(obj);

return str;

},
type: 'UserInfo'
});

 

Client Script :

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


var uid = newValue;

g_form.addInfoMessage(uid);

var ga = new GlideAjax('UserInfo');
ga.addParam('sysparm_name','getUserInfo');
ga.addParam('sysparm_usr',uid);

g_form.addInfoMessage('Hurray');

ga.getXML(test);


function test(response){


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

user = JSON.parse(user);

if(user != null)
{

g_form.setValue('title',user.title);
g_form.setValue('email',user.email);


}


}


}

 

Mark my ANSWER as CORRECT and HELPFUL if it helps

Community Alums
Not applicable

Hi Creativethinker,

My question is different. Please see the response which i gave to brad.

Regards,

Sirraj