Choice Fields are not set on Form while calling GlideAjax from Catalog Client Script
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-04-2024 01:52 AM
Hi ,
I have Choice Fields in a catalog item in the service portal. Via changes of other fields( On change Catalog client script ) , Glide ajax call is made to fetch the values.
I have made some logging statements in both Glide Ajax and Client Script. In the Backend, values are generated. From the Client side, Values are being Set( I see the Client logs) ,
But Those choice values are not being appearing on the fields.
Is there any way that we get these choice type variables values set?
Requirement :
On change of a Variable on Catalog Form , Set the field value to the value if it exists, otherwise set the label.
* the below code works for field types: "list" but not for "choice "
here is my catalog client Script :
My Glide Ajax Function :
Any Changes to code here ?
Please help.
Regards,
tia
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-04-2024 02:34 AM
Hi @jayapradade Try below code and modify accordingly
Script Include:
loadSystemInvetoryEntryGr: function() {
var debugMessage = 'The function loadSystemInvetoryEntryGr has been called';
var ret = [];
debugMessage += '\n' + this.getParameter('system_inventory_sys_id') + '\n' + this.getParameter('fields');
try {
var systemInvetoryEntry = this.getParameter('system_inventory_sys_id');
var fields = JSON.parse(this.getParameter('fields'));
var gr = new GlideRecord('cmdb_ci_business_app');
if (gr.get(systemInvetoryEntry)) {
for (var i in fields) {
var temp = {};
temp.key = fields[i];
var fieldElement = gr.getElement(fields[i]);
if (fieldElement) {
var rawValue = fieldElement.getValue();
var displayValue = fieldElement.getDisplayValue();
if (fieldElement.getED() && fieldElement.getED().getTableName() == 'sys_choice') {
temp.value = rawValue; // Use the raw value
} else {
temp.value = displayValue || rawValue;
}
gs.info('Field: ' + fields[i] + ', Raw Value: ' + rawValue + ', Display Value: ' + displayValue);
}
ret.push(temp);
}
}
} catch (ex) {
this._log.logErr(debugMessage + '\nError: ' + ex);
}
debugMessage += '\nReturn: ' + JSON.stringify(ret);
gs.info(debugMessage);
return JSON.stringify(ret);
}
Client Script :
function onChange(control, oldValue, newValue, isLoading) {
var preLoadId = getParameterValue('system_id');
if (isLoading && preLoadId) {
g_form.setValue('it_system_inventory_entry', preLoadId);
loadEntrysById(preLoadId);
}
if (newValue == '') {
var fieldNames = JSON.stringify(g_form.getFieldNames());
for (var i in fieldNames) {
g_form.clearValue(fieldNames[i]);
}
} else if (newValue != oldValue && newValue != '') {
loadEntrysById(newValue);
}
}
function loadEntrysById(sysId) {
var ga = new GlideAjax('clientHelper');
ga.addParam('sysparm_name', 'loadSystemInvetoryEntryGr');
ga.addParam('system_inventory_sys_id', sysId);
ga.addParam('fields', JSON.stringify(g_form.getFieldNames()));
ga.getXML(ajaxResponse);
function ajaxResponse(response) {
var answer = JSON.parse(response.responseXML.documentElement.getAttribute('answer'));
for (var i in answer) {
if (answer[i].key != 'it_system_inventory_entry') {
var fieldValue = answer[i].value;
g_form.addInfoMessage("fieldValue is " + fieldValue);
if (g_form.getControl(answer[i].key).type === 'select') {
var choices = g_form.getControl(answer[i].key).options;
var isChoiceValid = choices.some(option => option.value == fieldValue);
if (isChoiceValid) {
g_form.setValue(answer[i].key, fieldValue);
g_form.addInfoMessage("field Value Set to " + fieldValue);
} else {
g_form.addInfoMessage("Invalid choice value: " + fieldValue);
}
} else {
g_form.setValue(answer[i].key, fieldValue);
g_form.addInfoMessage("field Value Set to " + fieldValue);
}
}
}
}
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-04-2024 03:04 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-04-2024 03:21 AM
Added the Screenshot for your reference . The field business criticality is choice, And when i test in logs , that value is set. but it is not appearing on the form while the form loads.
all Choice fields on this form has same issue.