2010-03-17 74 views
3

在代码隐藏我可以做到这一点,选择的东西:选择项调用更新

// Select item in first DropDownList 
myCascadingDropDown_1.SelectedValue = itemValue_1+":::"+itemText_1; 

// Select item in second DropDownList 
myCascadingDropDown_2.SelectedValue = itemValue_2+":::"+itemText_2; 

我怎样才能做到这一点在JavaScript?

(我知道,我可以搜索列表,并为每个下拉selectedIndex属性,但我有很多项目,我很懒惰。)

编辑:

npups answer works:我可以在第一个下拉列表中选择我想要的项目。但问题是,基于选定项目的新值(它是CascadingDropDown,请记住?)不会显示在第二个下拉列表中,因此我无法在其中选择任何内容。我需要以某种方式手动调用第二个下拉列表的更新方法:任何建议?

回答

1

检查了这一点:

<select id="foo"> 
    <option value="bar">bar</option> 
    <option value="baz">baz</option> 
    <option value="bork">bork</option> 
</select> 

<script type="text/javascript"> 
    var selectElem = document.getElementById('foo'); 
    selectElem.value = 'baz'; 
</script> 

设置选择元素的值修复。

即使您只是将标记的内容用作值(而不是在选项的值属性中指定值),Firefox也会正确使用它。不确定其他浏览器。

编辑,更多的东西:
所以有一些其他的选择(或同等学历)由某些调谐功能更新时的第一选择的变化?
在这里,我在第一个选择的onchange。当使用这种“数值设定”技术设置所选元素时,不会触发onchange。但是,当您更改第一个选择时,可以手动调用协调功能。我在下面展示了两种不同的方式(包括评论)。

<select id="foo" onchange="harmonize();"> 
    <option value="bar">bar</option> 
    <option value="baz">baz</option> 
    <option>bork</option> 
</select> 

<select id="foo2"> 
<option value="0">This</option> 
<option value="1">That</option> 
</select> 


<script type="text/javascript"> 
    var select0 = document.getElementById('foo'); 
    var select1 = document.getElementById('foo2'); 
    select0.value = 'baz'; 
    // alternative 1: call harmonize(); 
    // alternative 2: call select0.onchange(); 

    function harmonize() { 
    if (select0.value==='baz') { 
     select1.value = '1'; 
    } 
    else { 
     select1.value = '0'; 
    } 
    } 
</script> 

我没有打算在这里隐藏全局变量等,但当然这是一个好主意。

+0

谢谢!我会尝试你的建议... – akosch 2010-03-17 16:01:30

+0

请参阅编辑请... – akosch 2010-03-17 16:33:55

+0

我刚刚编辑我的回复 – npup 2010-03-17 17:09:23

2

我能解决这个问题:

1)随着npups建议我能“myCascadingDropDown_1”设置为我的理想值。

2)使用

myCascadingDropDown_2.CascadingDropDownBehavior._onParentChange(NULL, NULL);

方法我能够强制第二个下拉菜单根据“myCascadingDropDown_1”的新选定值进行重新填充。

3)我写了一个定时器来定期检查,如果第二个下拉已完成复育,并设置所需的值,如果它已经(再次使用npups接听)..

0

你也可以使用myCascadingDropDown_2.set_SelectedValue(resultval, resultVal)而不是定时器(item3)