- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-28-2017 04:11 PM
I have three fields as shows in the screenshot below,
1 User selects Category = 'Software'
2 On clicking Type dropdown, we want to query a Table called 'Inventory' (where we have Category, Type & Subtype columns data) and pull matching Type values from there.
But here is another thing - while displaying Type values, we need to transform them by appending Type & Subtype together with a dot(.) and making them lowercase.
So the Type dropdown should show the values in this format -> type.subtype
Is this possible?
Thank you,
Yogesh
Solved! Go to Solution.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-29-2017 10:17 PM
Hi Yogesh,
Please check below code with few modifications.
********** Script Include *****************
var DisplayTypeMenu = Class.create();
DisplayTypeMenu.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
getListDetails : function() {
var list = [];
var order = this.getParameter('sysparm_category');
var gr = new GlideRecord('x_137749_test_menuvalue'); // Table name was wrong, it had x_137749_test_menuvalues (extra s) instead of x_137749_test_menuvalue
gr.addQuery('localmenuname', order); // Field name was wrong, filed backend name is localmenuname
gr.query();
while(gr.next())
{
var item_val = gr.getDisplayValue('menuvalue');
list.push(item_val);
}
return JSON.stringify(list);
},
type: 'DisplayTypeMenu'
});
*********** Client Script ******************
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
//g_form.clearOptions('type'); //change the field name with dependent field name
var listDetails = new GlideAjax("DisplayTypeMenu");
listDetails.addParam("sysparm_name", "getListDetails");
listDetails.addParam("sysparm_category", newValue);
listDetails.getXML(ajaxResponse);
function ajaxResponse(serverResponse) {
var answer = serverResponse.responseXML.documentElement.getAttribute("answer");
var myObj = JSON.parse(answer);
alert(myObj);
// if(myObj.length > 0)
// {
// for(var i = 0; i<myObj.length; i++)
// {
// //g_form.addOption('type', myObj[i].toLowerCase(), myObj[i].toLowerCase()); //Replace the field name where you have to assign the value
// alert(myObj[i].toLowerCase());
// }
// }
}
}
Result:
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-28-2017 06:37 PM

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-28-2017 06:50 PM
Hi Yogesh,
I tried like below code and it worked, you might need to make some changes to meet your requirements.
onChange Client Script:
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
g_form.clearOptions('u_new_choice'); //change the field name with dependent field name
var listDetails = new GlideAjax("DisplayTypeList");
listDetails.addParam("sysparm_name", "getListDetails");
listDetails.addParam("sysparm_order", newValue);
listDetails.getXML(ajaxResponse);
function ajaxResponse(serverResponse) {
var answer = serverResponse.responseXML.documentElement.getAttribute("answer");
var myObj = JSON.parse(answer);
if(myObj.length > 0)
{
for(var i = 0; i<myObj.length; i++)
{
g_form.addOption('u_new_choice', myObj[i].toLowerCase(), myObj[i].toLowerCase()); //Replace the field name where you have to assign the value
}
}
}
}
Client Callable Script Include:
var DisplayTypeList = Class.create();
DisplayTypeList.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getListDetails : function() {
var list = [];
var gr = new GlideRecord('sys_choice'); //Replace with your table name
var order = this.getParameter('sysparm_order');
gr.addQuery('element', order); //Add your queries here
gr.query();
while(gr.next())
{
var item_val = gr.getValue('value') + '.' + gr.getValue('label'); // Replace the field names from where you have to fetch the value
list.push(item_val);
}
return JSON.stringify(list);
},
type: 'DisplayTypeList'
});
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-28-2017 07:40 PM
Just want add -
In my case, Type field is of type 'Reference'.
Does it need to be of type 'Choice'?
Thank you,
Yogesh
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-28-2017 07:43 PM
I tried by making 'Type' a Choice field. It doesnt seem to be working

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-28-2017 07:48 PM
On reference field this will work, you need to have it as choice field, let me know what code are you using?
In sysparm_order you should pass the category value, sysparm_order is a variable which will be used in script include.