通过JavaScript& amp;选择CascadingDropDown中的项目。调用更新

时间:2010-03-17 15:51:09

标签: asp.net javascript asp.net-ajax

在代码隐藏中,我可以选择这样做:

// 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,还记得吗?)在第二个下拉列表中没有显示,所以我不能在那里选择任何东西。我需要以某种方式手动调用第二个下拉列表的更新方法:任何建议?

3 个答案:

答案 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)