2011-06-17 160 views
2

我有一些在C#代碼隱藏中動態創建的複選框。我們說兩列。這工作正常。C#javascript啓用/禁用複選框

我希望左側欄中的複選框可以在檢查時啓用/禁用右側的複選框。我通過將屬性附加到運行javascript的代碼隱藏複選框來執行啓用/禁用操作。這很好。

這裏的JavaScript:

function SetPrimaryStatus(target, senders) { 
    var dis = "disable"; 
    var arr = senders.split(","); 
    for (var i = 0; i < arr.length; i++) { 
     if (document.getElementById(arr[i]).checked == true) { 
      dis = ""; 
      break; 
     } 
    } 
    document.getElementById(target).disabled = dis; 
    if (dis == "disable") document.getElementById(target).checked = false; 
} 

我以爲我是在家自由......我只是要禁用代碼隱藏(CheckBox.Enabled = false;)在創建右列的複選框。好。

無論出於何種原因,當我檢查左邊的複選框時,正確的不做任何事。我已經在javascript中設置了警報,並且他們總是出現...並且事情似乎是應該設置的。當我在代碼隱藏中刪除CheckBox.Enabled = false;時,它再次運行。

事實上,我可以用一個支票啓動一些左邊的複選框,並啓用相應的右邊的複選框。當我運行開始啓用的集合時,它完美無缺,但是以右邊的複選框啓動的集合並不適用。

除了Enabled之外,我應該在代碼隱藏中設置啓動複選框處於禁用狀態的JavaScript,然後可以更改?與「禁用」相比,這是真假嗎?我已經嘗試了兩種。

+0

您是否在頁面上做回傳?你有更新面板嗎?它是根本沒有停止工作,或者當你第一次加載頁面,然後它不再? –

+0

在檢查/取消選中複選框的過程中不會發生回傳。所以,沒有更新面板發揮作用。如果我在代碼隱藏中啓用動態複選框,並且只有在加載時將某些複選框設置爲enabled = false,纔會停止工作。一切仍然通過JavaScript。沒有回傳,所以沒有第一次加載,第二次加載的事情正在發生。 – Metallicraft

回答

0

我在這裏找到答案:http://forums.asp.net/t/982967.aspx/1

我不得不將document.getElementById(target).parentElement.disabled = dis;添加到我的JavaScript函數中。所有現在都按預期工作。感謝大家的建議。

0

嘗試添加「禁用」屬性。即

CheckBox.Attributes["disabled"] = "disable"; 

反正我覺得是更好地使用.removeAttribute("diabled")方法,而不是設置它的價值,是空字符串。

+0

我試過兩種方法(設置CheckBox.Enabled = false和CheckBox.Attributes [「disabled」] =「disable」)。同樣的結果。 – Metallicraft