2010-11-12 65 views
2

我有一個.net 4 asp.net網站。在列表視圖的每個「單元格」中都有一個複選框的列表視圖。我想附加一些javascript到這些複選框,當複選框被選中/取消選中時,它會改變teh asp:tablecell的顏色。 listview綁定到一個集合。asp:新列表查看javascript問題

我不想在每次檢查更改時做回發,因爲可能會有相當多的複選框發生更改。

我採取了錯誤的方法或將JavaScript的一個很好的方法,如果是的話,有人可以幫助JavaScript。 感謝

回答

1

我這樣做在ListView的ItemDataBound事件。假設你有以下的JavaScript函數:

function changeClass(checkBoxId, containerId) { 
    var checkBox = document.getElementById(checkBoxId); 
    var container = document.getElementById(containerId); 
    if(checkBox.checked == true) container.style.backgroundColor = "#AAA"; 
    else container.style.backgroundColor = "#FFF"; 
} 

然後,您可以在使用的ItemDataBound喜歡的FindControl這樣:

protected void ListView1_ItemDataBound(object sender, EventArgs e) 
{ 
    var checkBox = e.Item.FindControl("nameOfCheckBox"); 
    var container = e.Item.FindControl("nameOfTableCell"); 

    checkBox.Attributes["onclick"] = "javascript:changeClass('" 
     + checkBox.ClientID + "','" 
     + container.ClientID + "');"; 
} 
+0

感謝那個...我仍然有在給ASP的一個問題:表格一個ID。我試過這樣的ID ='<%#databinder.eval(container.dataitem,「ID」)%>'。 – jvcoach23 2010-11-12 16:20:23

+0

您是否必須爲表格提供這樣一個特定的ID?我的解決方案適用於表格單元格的ID爲「TableCell1」的情況。 – 2010-11-12 16:22:42

+0

感謝您的幫助..我想出了我做錯了什麼。我需要使複選框爲2個狀態,但是這讓我走了。謝謝 – jvcoach23 2010-11-12 16:36:02

0

在服務器端,您可以附加JavaScript事件的控制,以attributes..property

像下面//

seversidecontrolID.Attributes.Add("onclick","Javascript: 
methodName(this);")