Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

How to create dependent variables in Multi row variable sets

Nitesh Kumar5
Tera Contributor

Hi All,

I have a requirement where I need to create 2 variables first is simple variable named test stockroom which is refeering to alm_stockroom table and second variable is MVRS test2 which includes one variable test asset  that is referring to alm_asset table and as per the requirement the second variable value(multi row variable) will be dependent on the first variable value selected that means if I select test stockroom as ABC value then in the multirow varaible set variable in test asset i can see the only the asset related to ABC stockroom. Could anyone please suggest how to acheive this?

1 REPLY 1

Amitoj Wadhera
Kilo Sage

Hi @Nitesh Kumar5 ,

 

Catalog Client Script:

function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue == '') {
        return;
    }
    
    // Make an AJAX call to get the filtered assets
    var ga = new GlideAjax('GetAssetsByStockroom');
    ga.addParam('sysparm_name', 'getAssets');
    ga.addParam('sysparm_stockroom', newValue);
    ga.getXMLAnswer(function(response) {
        var assetList = response.split(',');
        var mvrs = g_form.getValue('mvrs_test2');
        for (var i = 0; i < mvrs.length; i++) {
            var row = mvrs[i];
            var test_asset = row.getValue('test_asset');
            g_form.clearOptions('test_asset');
            g_form.addOption('test_asset', '', '-- None --');
            for (var j = 0; j < assetList.length; j++) {
                g_form.addOption('test_asset', assetList[j], assetList[j]);
            }
        }
    });
}

 

Script Include:

var GetAssetsByStockroom = Class.create();
GetAssetsByStockroom.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    getAssets: function() {
        var stockroom = this.getParameter('sysparm_stockroom');
        var assetList = [];
        var gr = new GlideRecord('alm_asset');
        gr.addQuery('stockroom', stockroom);
        gr.query();
        while (gr.next()) {
            assetList.push(gr.getValue('sys_id') + ',' + gr.getValue('name'));
        }
        return assetList.join(',');
    }
});

 

If you find my response helpful, please consider marking it as the 'Accepted Solution' and giving it a 'Helpful' rating. Your feedback not only supports the community but also encourages me to continue providing valuable assistance.

 

Thanks,

Amitoj Wadhera