Pre-populate Multirow Variable Set Values using Catalog Client Script based on Change of Variable
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-26-2024 11:27 PM
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'
});
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-27-2024 02:02 AM
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-27-2024 03:14 AM
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'
});