Copying List Collector Values to Multiline Text Field.

snow_p
Tera Contributor

Hi All,

In a requirement, need to copy List Collector Values into Multiline text field. For this, I created client script and script include. This is on a table when creating a new record on selection of values in list collector, need them to copy into multiline text.

Client Script:

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

var grpList = g_form.getValue('group_id');
alert(grpList);
var ga = new GlideAjax('grpValues');
ga.addParam('sysparm_name','grpDetails');
ga.addParam('sysparm_record',grpList);
ga.getXML(CallBack);

function CallBack(response){
var answer = response.responseXML.documentElement.getAttribute("answer");
g_form.setValue('grp_names', answer); 
alert(answer);
}
}

Script Include:

var grpValues = Class.create();
grpValues.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
grpDetails: function(){
var grpVal = [];
var grpList = this.getParameter('sysparm_record');
var Value = grpList.split(',');


for(var i=0; i< Value.length; i++){
var names = new GlideRecord('u_groups'); 
names.addQuery('sys_id',Value[i]);
names.query();
while(names.next())
{

grpVal.push(names.grp_name+''); 

}

}
return grpVal.join();
},
    type: 'grpValues'
});

I'm getting selected list values in alert but they are not populating into multiline text and getting null alert 

1 ACCEPTED SOLUTION

@Nani.P 

when the last value is removed the newValue is empty

so the onchange client script was not executing as the newValue check was present along with the isLoading

please update as below and it should work fine

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

// when newvalue is empty/cleared

if(newValue == ''){

g_form.clearValue('grp_names'); // clear the values

}


g_form.clearValue('grp_names'); // clear the values

var grpList = g_form.getValue('group_id');
alert(grpList);
var ga = new GlideAjax('grpValues');
ga.addParam('sysparm_name','grpDetails');
ga.addParam('sysparm_record',grpList);
ga.getXML(CallBack);

function CallBack(response){
var answer = response.responseXML.documentElement.getAttribute("answer");
g_form.setValue('grp_names', answer.toString().split(',').join('\n'));
alert(answer);
}
}

Regards
Ankur

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

View solution in original post

22 REPLIES 22

Ankur Bawiskar
Tera Patron
Tera Patron

Hi,

some error in your script

1) glide record object was not proper

2) array to be used should be Value

var grpValues = Class.create();
brpValues.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
    
grpDetails: function(){
    
var grpVal = [];
var grpList = this.getParameter('sysparm_record');
var Value = grpList.split(',');


for(var i=0; i< Value.length; i++){
var names = new GlideRecord('u_groups');
names.addQuery('sys_id',Value[i]);
names.query();
if(names.next())
{
grpVal.push(names.grp_name.toString());
}
}

gs.info('Group is' + grpVal);

return grpVal.join();
},
    type: 'grpValues'
});

Regards
Ankur

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

Hi Ankur, still I'm getting same null alert. is there any issue with script ? This requirement is not on a catalog item. 

Hi,

is the script include client callable?

are you querying the proper table u_groups?

is the field group_id also referring to the same table i.e. u_groups

Regards
Ankur

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

Hi Ankur, 

List collector is referencing to 'u_groups' table.

List collector(group_id)  and multiline text(grp_name) on the table 'u_roles'.