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.