How to auto populate field value from List collector to String field

MS17
Tera Contributor

Hi All,

In a knowledge form, we have a field called "OpCo (List Collector)", If we have selected any value in the OpCo field (ex: FXE,FXO), this should be populated in the prefix of short description field. I have written onload client script, but instead of choice name, the value is populated, can anyone help me on this? see below images for reference.

Onload Client script:

function onLoad() {
//Type appropriate comment here, and begin script below
var list = g_form.getValue('u_opcom').toString();
alert(list);
var array = list.split(',');
for (var i=0; i < array.length; i++) {
g_form.addInfoMessage("This should be the list collector value " + array[i]);
var shortDesc = g_form.getValue('short_description');
g_form.setValue('short_description', array[i].toString() + ' , ' + shortDesc);
}
}

 

kn.PNG

 

Here 2 and 1 are the choice value of FXE and FXO.

kn1.PNG

Thanks.

 

2 ACCEPTED SOLUTIONS

Gopi Naik1
Kilo Sage

Hi @MS17 ,

 

Create a client callable script include as follows:

 

var GetKbArticles = Class.create();
GetKbArticles.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getWatchList:function(){
var id = this.getParameter('sysparm_sysID');
var watchlist;
var kb=new GlideRecord('kb_knowledge');
if(kb.get(id.toString())){
watchlist=kb.getDisplayValue('u_opcom');
}
return watchlist.toString();
},
type: 'GetKbArticles'
});

 

And call in client script.

 

function onLoad() {
//Type appropriate comment here, and begin script below
if (!g_form.isNewRecord()) {
var arr = [];
var ga = new GlideAjax('GetKbArticles');
ga.addParam('sysparm_name', "getWatchList");
ga.addParam('sysparm_sysID', g_form.getUniqueValue());
ga.getXMLAnswer(function(answer) {
arr = answer.split(',');
for (var i = 0; i < arr.length; i++) {
g_form.addInfoMessage("This should be the list collector value " + arr[i]);
var shortDesc = g_form.getValue('short_description');
g_form.setValue('short_description', arr[i].toString() + ' , ' + shortDesc);
}

});
}
}

 

 

If my solutions helps you to resolve the issue, Please accept solution and Hit "Helpful".

Thanks,
Gopi

View solution in original post

You can use below :

function onLoad() {
    var list = g_form.getValue('u_opcom').toString();
    var shortDesc = g_form.getValue('short_description').split(':');
    if (shortDesc.length > 1)
        shortDesc = shortDesc[1];
    else
        shortDesc = shortDesc[0];

    var op = [];
    var array = list.split(',');
    for (var i = 0; i < array.length; i++) {
        if (array[i] == '1')
            op.push('FXO');
        if (array[i] == '2')
            op.push('FXE');
    }
if(op.length>0)
       g_form.setValue('short_description', op.toString() + ':' + shortDesc); // here : is used to separate OpCo and short description

}
Please appreciate the efforts of community contributors by marking appropriate response as correct answer and helpful, this may help other community users to follow correct solution in future.
Thanks
Anil Lande

View solution in original post

21 REPLIES 21

How did you handle 20 choices?

Hervi
Tera Contributor

I have a similar use case.

Can you look below in my script and see why it is not working?

function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue == '') {
        return;
    }
    var list = g_form.getDisplayValue('parent').toString();
    var array = list.split(',');
	alert("list is " +array);
    for (var i = 0; i < array.length; i++) {
        if (array[i].includes('RITM')) {
            g_form.setValue('type', 'Enhancement::Planned Change');
			alert("set type field for ritm");
           // return;
        } else if (array[i].includes('PRB')) {
            g_form.setValue('type', 'HI22');
           // return;
        }
    }


}

Gopi Naik1
Kilo Sage

Hi @MS17 ,

 

Try to Use var list=g_form.g_form.getDisplayBox('u_opcom').value;

 

 

If my solutions helps you to resolve the issue, Please accept solution and Hit "Helpful".

Thanks,
Gopi

MS17
Tera Contributor

Hi @Gopi Naik1,

I have tried this, It is not working.

Thanks.

Gopi Naik1
Kilo Sage

You can Use ist=g_form.getDisplayBox('u_opcom').value; to get display values.

 

 

If my solutions helps you to resolve the issue, Please accept solution and Hit "Helpful".

Thanks,
Gopi