2010-03-17 75 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)