2009-12-31 74 views
2

我有以下JavaScript來切換ASP.NET頁面中的下拉列表,當我點擊一個按鈕時會調用它。我有4-5下拉列表/切換按鈕對。每個切換按鈕切換關聯的下拉列表中的啓用/禁用屬性。客戶端javaScript切換回發上的下拉列表效果?

function toggleDisableDropDown(dropDownID) { 
    var element = document.getElementById(dropDownID); // get the DOM element 

    if (element) { // element found 
    element.disabled = !element.disabled; // invert the boolean attribute 
    } 

    return false; // prevent default action 
} 

但我的dropdownlist中的一個需要每次都做回發。我選擇一個項目來填充另一個下拉列表,我注意到在這個回發中,所有被javascript禁用的其他下拉列表(用戶單擊這些下拉列表的切換按鈕)被啓用。

這裏發生了什麼?我該如何解決它?

回答

1

Javascript DOM操作與服務器上控件的保存狀態無關。服務器上的控制狀態不會知道更改客戶端上的下拉列表的已啓用屬性。

回貼重新創建使用控件的最後已知狀態的下拉列表。如果你想讓它們使用客戶端的最後一個狀態重新渲染,你還需要發佈一些客戶端跟蹤信息。您可以在隱藏字段中跟蹤每個下拉列表的客戶端狀態,並使用這些隱藏字段中發佈的值更新服務器上下拉列表的Enabled屬性。

//Html 
<input type="hidden" name="_trackingDropdown1" value="true" /> 

//Client Javascript 
function toggleDisableDropDown(dropDownID) { 
    var element = document.getElementById(dropDownID); // get the DOM element 
    var trackingField = document.getElementById("_tracking" + dropDownID); 

    if (element) { // element found 
    element.disabled = !element.disabled; // invert the boolean attribute 
    trackingField.value = element.disabled; 
    } 

    return false; // prevent default action 
} 

//On Server during postback handling 
if (Request.Params["_trackingDropDown1"] != null) 
{ 
    bool.TryParse(Request.Params["_trackingDropDown1"], out DropDownList1.Enabled); 
} 
+0

我得到 bool.TryParse以下錯誤(Request.Params [ 「_ trackingDropDown1」],出DropDownList1.Enabled) 屬性或索引可能不會作爲out或ref參數傳遞 – 2009-12-31 18:59:26

+0

哦,只需使用一個臨時變量即可。布爾結果; bool.TryParse(Request.Params [「_ trackingDropDown1」],out結果); DropDownList1.Enabled = result; – womp 2009-12-31 20:58:45

相關問題