How to populate dropdown values based on another dropdown value

SSA1
Giga Expert

Hi,

I have issue where there are two drop downs in Incident form.

Product Line - this is populating from choices we have added to sys_choice table

Based on the selected product line value related Products have to populate into the Products drop down.

I'm populating these products value from Choice mapping custom table.

In Incident.

Product Line-String 

Product column - String

See below screenshots.

find_real_file.png

find_real_file.png

 

I have written a Onchange Client script as below but can't populate 'Product' drop down.

Can anyone please give some guidance on this how to achieve this.

var prod_line = g_form.getValue('u_p_line');
var gr=new GlideRecord('u_choice_mapping');
gr.addQuery('u_product_line',prod_line);
gr.query();
while(gr.next())
{
     g_form.setValue('u_product',gr.u_product_choice_mapping);
		
}

 

1 ACCEPTED SOLUTION

Use the same code in OnChange script

Sample code:

function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
g_form.clearOptions('u_integer_f');
//your code here
var ga = new GlideAjax('HelloWorld');
    ga.addParam('sysparm_name', 'helloWorld');
    ga.addParam('sysparm_user_name', newValue);
    ga.getXML(HelloWorldParse);

    function HelloWorldParse(response) {
        var answer = response.responseXML.documentElement.getAttribute("answer");
        //  alert(answer);
        var x = answer.split(",");
        for (var i = 0; i < x.length; i++)
            g_form.addOption('u_integer_f', x[i], x[i]);

    }
}


 


Mark it helpful if this helps you to understand. Accept solution if this give you the answer you're looking for
Kind Regards,
Rohila V
2022-25 ServiceNow Community MVP

View solution in original post

12 REPLIES 12

Use the same code in OnChange script

Sample code:

function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
g_form.clearOptions('u_integer_f');
//your code here
var ga = new GlideAjax('HelloWorld');
    ga.addParam('sysparm_name', 'helloWorld');
    ga.addParam('sysparm_user_name', newValue);
    ga.getXML(HelloWorldParse);

    function HelloWorldParse(response) {
        var answer = response.responseXML.documentElement.getAttribute("answer");
        //  alert(answer);
        var x = answer.split(",");
        for (var i = 0; i < x.length; i++)
            g_form.addOption('u_integer_f', x[i], x[i]);

    }
}


 


Mark it helpful if this helps you to understand. Accept solution if this give you the answer you're looking for
Kind Regards,
Rohila V
2022-25 ServiceNow Community MVP

Jim Coyne
Kilo Patron

Is there a reason why you are not simply using the sys_choice table to contain the list of products?  Would simplify things.

Since the number of choices are too high in the sys_choice. We want to keep some into separate table, which there can be more choices added in the future