Pre-populate Multirow Variable Set Values using Catalog Client Script based on Change of Variable

sivanagalakshmi
Tera Contributor

Using below code I am able to add only 1 row(1 user details)  to MRVS , can any one help how to add multiple rows .

 

with same department I have 4 records on user table, want to show theses 4 records data in MRVS.

 

 

 

 

Client Script: 

function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}

var ga = new GlideAjax('global.multipop'); //calling script include
ga.addParam('sysparm_name', 'fetchDetails'); //Script include function
ga.addParam('sysparm_dpt', newValue); //On change Value
ga.getXML(setUserDet);

function setUserDet(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
g_form.setValue('get_employee_details', answer); // Add your Variable set Name

}

}

Script Include:

var multipop = Class.create();
multipop.prototype = Object.extendsObject(AbstractAjaxProcessor, {

fetchDetails : function()
{
var dataArr = [];
var data = {};
var deptId = this.getParameter('sysparm_dpt');
var gr = new GlideRecord("sys_user");
gr.addQuery('department',deptId);
gr.addQuery('active',true);
gr.query();
while(gr.next())
{
data = {};
data.employee = gr.sys_id.toString();
data.mobile_no = gr.mobile_phone.toString();
data.email_id = gr.email.toString();
dataArr.push(data);
}
return JSON.stringify(dataArr);

},
type: 'multipop'
});

2 REPLIES 2

Community Alums
Not applicable

Try below code in the object section.

var temp = []; // creating a empty array

var data = {}; //This represents one row in MVRS and below are columns in MVRS

data.employee1 = "value 1"; // adding values

data.vemployee2 = "value 2";

temp.push(data); // pushing values to array

Brad Bowman
Kilo Patron
Kilo Patron

I don't immediately see what the issue is, but here's a slightly different approach that I use for he array and object, with a temporary log to confirm the records retrieved by the GlideRecord:

var multipop = Class.create();
multipop.prototype = Object.extendsObject(AbstractAjaxProcessor, {

    fetchDetails : function() {
        var dataArr = [];
        var deptId = this.getParameter('sysparm_dpt');
        var gr = new GlideRecord("sys_user");
        gr.addQuery('department',deptId);
        gr.addQuery('active',true);
        gr.query(); 
        while (gr.next()) {
            gs.info('SI gr record retrieved: ' + gr.name);
            dataArr.push({
                "employee" : gr.sys_id.toString(),
                "mobile_no" : gr.mobile_phone.toString(),
                "email_id" : gr.email.toString(),
            });
        }
        return JSON.stringify(dataArr);
    },
    type: 'multipop'
});