在代码隐藏中,我可以选择这样做:
// 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回答有效:我可以在第一个下拉列表中选择我想要的项目。但问题是,基于所选项目的新值(它是CascadingDropDown,还记得吗?)在第二个下拉列表中没有显示,所以我不能在那里选择任何东西。我需要以某种方式手动调用第二个下拉列表的更新方法:任何建议?
答案 0 :(得分:2)
我能够解决这个问题:
1)通过npups建议,我可以将“myCascadingDropDown_1”设置为我想要的值。
2)使用
myCascadingDropDown_2.CascadingDropDownBehavior._onParentChange(NULL, 空);
方法我能够根据新选择的“myCascadingDropDown_1”值强制第二个下拉列表重新填充。
3)我写了一个计时器,定期检查第二个下拉列表是否已完成重新填充,并设置所需的值(如果有)(再次使用npups回答)..
答案 1 :(得分: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>
设置select元素的值可以修复它。
即使您只是将标记的内容用作值(而不是在选项的value属性中指定值),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>
我没有在这里隐藏全局变量等,但当然这是一个好主意。
答案 2 :(得分:0)
你也可以使用myCascadingDropDown_2.set_SelectedValue(resultval,resultVal)代替timer(item3)