This is a strp down version of what I use
It is JavaScript
If your going to build the page dynamically with ASp then you would have to response.write the code shown below. For example: response.Write("<BODY onLoad = 'init_page();'>"
stripped down version
'---------------------------------------------------------
<BODY onLoad = "init_page();">
<FORM NAME="F1">
<SELECT id="DD1"
name="DD1"
onChange = "fill_list(document.DD2_Array, document.F1.DD1[document.F1.DD1.selectedIndex].value, document.F1.DD2);">
</SELECT>
<SELECT id="DD2"
name="DD2">
</Select>
</form>
</Body>
<SCRIPT language = "JavaScript">
function init_page()
{
fill_list(document.DD1_Array, 0, document.F1.DD1, true);
fill_list(document.DD2_Array, document.F1.DD1[document.F1.DD1.selectedIndex].value, document.F1.DD2, false);
}
function fill_list(item_array, parent_item_id, output_select_list, init_flag)
{
output_select_list.length = 0;
for (x = 0; x < item_array.length; x++ )
{
if ( item_array[x] == parent_item_id || init_flag == true )
{
var option1 = new Option(item_array[x+1], item_array[x+2]);
output_select_list.options[output_select_list.length] = option1;
}
x+=2;
}
output_select_list[0].selected = true;
}
//The Arrays that hold the values to display
document.DD1_Array = new Array ('1', 'Value 1', '1',
'2', 'Value 2', '2');
document.DD2_Array = new Array('1', 'Sample 1', '1',
'1', 'Sample 2', '2',
'1', 'Sample 3', '3',
'1', 'Sample 4', '4',
'2', 'Sample 5', '5',
'2', 'Sample 6', '6',
'2', 'Sample 7', '7',
'2', 'Sample 8', '8',
'2', 'Sample 9', '9');
</SCRIPT>