Hi All,

I need a combobox that populates based on the selection of other combobox.
It´s pretty simple to do in jsp, but i want to convert it to a tapestry
component that just takes 2 collection as parameters. contents of the first
combobox and then a map of lists, with the id of the object contained in the
first combobox as a key.

I havent used javascript in tapestry, otherwise than call some functions
that are generated using Any component.

my jsp function generates couple of arrays holding the mappings and values
and when the first combobox is changed the function is called. i think i´ve
figured out from the documentation how to pass the name of the form and
component to the script so it can read the value that was changed but how do
i generate the arrays?


here is an example of one function generated in the jsp

function change_combo()
{
var comboone_value = new Array();
var comboone_title = new Array();


comboone_value[0] = "51";

comboone_title[0] = "username1";

comboone_value[1] = "37";
comboone_title[1] = "username2";


var combotwo_title = new Array();
var combotwo_value = new Array();


combotwo_title[51] = new Array();
combotwo_value[51] = new Array();


   combotwo_value[51][0] = "296";
   combotwo_title[51][0] = "Customer A";

   combotwo_value[51][1] = "294";

   combotwo_title[51][1] = "Customer B";

   combotwo_value[51][2] = "297";
   combotwo_title[51][2] = "Customer C";




combotwo_title[37] = new Array();
combotwo_value[37] = new Array();



   combotwo_value[37][0] = "277";
   combotwo_title[37][0] = "Customer 1";

   combotwo_value[37][1] = "283";
   combotwo_title[37][1] = "Customer 2";

   combotwo_value[37][2] = "300";

   combotwo_title[37][2] = "Customer 3";




var combo1_selection;
combo1_selection = document.customerCall.userId[
document.customerCall.userId.selectedIndex].value;



  if (combo1_selection != 0) {


    var combo2_values = combotwo_value[combo1_selection];
    var combo2_titles = combotwo_title[combo1_selection];
   if(combo2_values == null)
   {

      document.customerCall.customerId.options[0].value = "-";

      document.customerCall.customerId.options[0].text = "-";
      document.customerCall.customerId.length = 1;
   } else
   {


   document.customerCall.customerId.length = combo2_values.length;


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

         document.customerCall.customerId.options[i].value=
combo2_values[i];
         document.customerCall.customerId.options[i].text=combo2_titles[i];
      }


      }
  }else{
      document.customerCall.customerId.options[0].value
= "-";
      document.customerCall.customerId.options[0].text =
"-";
  }
}


how do i do for loops in the script?

we´re thinking of upgrading to 4.1, is there some component that i could use
to populate the second one with ajax, so i would be spared of this
javascript generation?

Reply via email to