Populate List Collector From Another List Collector

arobertson
Tera Guru

Hi,

 

I have a form with two list collectors. One is for adding group owners and the second is for adding group members.

 

I would like the group members list collector to populate with what ever is in the group owners list collector. Is this possible?

11 REPLIES 11

sri101
Kilo Explorer

i have same question.. but below solution not working for my problem..


I have Two list collector Variable in My   service catalogue item..


If i am selecting First List collector   available   choices


In second   list collector auto populate   his choices related to 1st list collector.


( it is something like that   , I have in 1st list collector :Groups: group 1, group 2, group 3..


2nd   list collector :user related that each group( user 1,user 2,user 3,user 4,user 5,user 6,user 7..


group 1 contain user 1,user;; group 2 contain user 3,user 4,user 5;; group 3 contain user 6,user 7


if i am selecting 1st list collector group 1 and adding left to right, i want see only 2 user related to that group (means user 1 and user 2) ,,similarly for Group 2 and group 3)


how to achieve this??


tnni1
Tera Contributor

Hi,


This code is working fine , but it is affecting speed .



function onChange(control, oldValue, newValue, isLoading) {


  if (isLoading || newValue == '') {


  return;


  }




  var varName1 = 'list1';     //"list1" is name of 1st list collector


  var rightBucket1 = gel(varName1 + '_select_1');


  var rightList1 = rightBucket1.options;



  var varName2 = 'list2';     //"list2" is name of 2nd   list collector


  var rightBucket2 = gel(varName2 + '_select_1');


  var rightList2 = rightBucket2.options ;



  var selectedIDs = new Array();



  for( var i = 0; i < rightList1.length; i++){


  selectedIDs[i] = rightList1[i].value;


  //alert( selectedIDs[i]);


  //break;



  }


  removeListOptions(rightList1,rightBucket2);


  movetoList2(rightList1, selectedIDs, rightBucket2);


}


function movetoList2(rightList1,selectedIDs, rightBucket2){



  for(var i = 0; i < rightList1.length; i++){


  //alert(selectedIDs[i]);


  var us = new GlideRecord('sys_user');


  us.addQuery('sys_id', selectedIDs[i]);


  us.query();



  while (us.next()){


  var option = document.createElement("option");


  option.value = us.sys_id;


  option.text = us.name;


  rightBucket2.add(option);


  //leftBucket.remove(option);


  }


  }


}


function removeListOptions(rightList1,rightBucket2){



  rightBucket2.length =0;



}