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

How to add Choice values

Sironi
Kilo Sage

Hi All,

Please suggest me how to add choice values from array.

find_real_file.png

Array CHOICEVALUES[value,label]

[chat,Chat,voice_call,Voice Call,walk-in,Walk In,email_fire,Email Fire]

 

Issue : Now How to add choices from Workspace client script using with for-loop

function onClick(g_form) {

    var fields = [{
        type: 'choice',
        name: 'invoice_type',
        label: getMessage('invoice type'),
        value: getMessage(' -- Select -- '),
        choices: [{
            displayValue: '',
            value: ''
        }],
        mandatory: true
    }, {
        type: 'string',
        label: getMessage('Invoicer'),
        value: g_form.getDisplayValue('consumer'),
        readonly: true,
    }];

    g_modal.showFields({
        title: "Product for Invoice",
        fields: fields,
        size: 'lg'
    }).then(function(fieldValues) {
        g_form.setValue('short_description', fieldValues.updatedFields[1].value);
        //<--------------------------------------------------------------------------------------->//	
        var ga = new GlideAjax('CDAInvoiceProcessor');
        ga.addParam('sysparm_name', 'getInvoiceTypes');
        ga.getXML(populateChoiceeField);

        function populateChoiceeField(response) {
            var msg = response.responseXML.documentElement.getAttribute('answer').toString();
            if (msg != '') {
                msg = msg.split(',');
                if (msg.length > 0) {
                    g_form.clearOptions(fieldValues.updatedFields[0].name);
                    g_form.addOption(fieldValues.updatedFields[0].name, '', '-- None --');
                    for (var i = 0; i < msg.length; i = i + 2) {
						fieldValues.updatedFields[0].value= msg[i];
						fieldValues.updatedFields[0].displayValue= msg[i+1];
                       
                    }
                }
            }
        }

        //<---------------------------------------------------------------------------------------->//	


       
    });
}

 

1 ACCEPTED SOLUTION

Hi,

if you wish to add None then do this

Script Include:

var arr = [];

// to add None
arr.push({
	"value":"",
	"displayValue":"-- None --"
});

var DWN = new GlideRecord("u_customer");
DWN.addQuery("u_active", true);
DWN.addQuery("u_name", "Customer Specific Type");
DWN.addQuery('u_customer',' b70c0f830f37330013a831ef68767e33');
DWN.query();
if (DWN.next()) {
	PARMS = DWN.u_parms.split(',');
	gs.info("PARMS " + PARMS.length + "--" + PARMS);
	for (var i = 0; i < PARMS.length; i++) {
		var obj = {};
		var choice = new GlideRecord('sys_choice');
		choice.addQuery('name', 'incident');
		choice.addQuery('language', 'en');
		choice.addQuery('element', 'contact_type');
		choice.addQuery('inactive', false);
		choice.addQuery('value', PARMS[i]);
		choice.query();
		if (choice.next()) {
			obj["value"] = choice.value.toString();
			obj["displayValue"] = choice.label.toString();
			arr.push(obj);
		}
	}
}

var result = {};
result["choices"] = arr;

return JSON.stringify(result);
},

Workspace client script:

function onClick(g_form) {

	var fields = [];
	fields.push({
		type: 'string',
		label: getMessage('Invoicer'),
		value: g_form.getDisplayValue('consumer'),
		readonly: true,
	});

	var ga = new GlideAjax('CDAInvoiceProcessor');
	ga.addParam('sysparm_name', 'getInvoiceTypes');
	ga.getXML(populateChoiceeField);
	ga.getXMLAnswer(populateChoiceeField);

	function populateChoiceeField(response) {
		var msg = response;
		var answer = JSON.parse(msg);
		fields.push({
			type: 'choice',
			name: 'invoice_type',
			label: getMessage('invoice type'),
			choices: answer.choices,
			mandatory: true
		});

		g_modal.showFields({
			title: "Product for Invoice",
			fields: fields,
			size: 'lg'
		}).then(function(fieldValues) {
			g_form.setValue('short_description', fieldValues.updatedFields[1].value);
			//<--------------------------------------------------------------------------------------->//	


			//<---------------------------------------------------------------------------------------->//	

		});
	}
}

Regards
Ankur

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

View solution in original post

20 REPLIES 20

Community Alums
Not applicable

Hi @Sironi ,

You can do this in the client with syntax like:

var arr = ['value1','value2','value3'];

for(var i=0; i< arr.length; i++){
g_form.addOption('field_name', arr[i]);
}

You can use the addOption method to add a choice value and position as well but you would need more data available in your array.

You can also refer to this thread:

https://community.servicenow.com/community?id=community_question&sys_id=162a35a3db600810190dfb24399619bc

 

Mark my answer correct & Helpful, if Applicable.

Thanks,

Sandeep

HI Sandeep,

this is Workspace client script and we are creating field in Workspace g_modal form only. 

if we use below line it will check the field from interaction form right ?. 

g_form.addOption('field_name', arr[i]);

 

But we need to push values into workspace field .

type: 'choice',
name: 'invoice_type',
label: getMessage('invoice type'),
value: getMessage(' -- Select -- '),
choices: [{
displayValue: '',
value: ''
}

Ankur Bawiskar
Tera Patron
Tera Patron

Hi,

from where are those choices coming?

will it be always those 4 choices?

why not add them 1 by 1? why for loop is required?

Regards
Ankur

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

from where are those choices coming? : From script-Include

will it be always those 4 choices? : values coming from Script-include so in future values may increase or decrease as per Query condition in script include.

why not add them 1 by 1? why for loop is required? : values coming from script include.