2010-11-12 5 views
2

J'ai un site web .net 4 asp.net. Il y a une liste avec une case à cocher dans chaque "cellule" de la liste. Je voudrais attacher un peu de javascript à ces cases à cocher en ce que lorsque la case à cocher est cochée/décochée, elle change la couleur de l'asp: tablecell. La listview est liée à une collection.asp: new listview javascript question

Je ne veux pas effectuer de publication à chaque changement de vérification car il peut y avoir plusieurs cases à cocher. Est-ce que je prends la mauvaise approche ou javascript serait une bonne approche et si oui, quelqu'un peut-il aider avec le javascript. grâce

Répondre

1

Je le fais en cas ItemDataBound de ListView. Disons que vous avez la fonction javascript suivante:

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"; 
} 

Ensuite, vous pouvez utiliser FindControl dans ItemDataBound comme ceci:

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

merci pour cela ... Je suis toujours avoir un problème à donner l'aspic: tablecell un ID. J'ai essayé quelque chose comme ceci ID = '<% # databinder.eval (container.dataitem, "ID")%>'. – jvcoach23

+0

Dois-tu donner au tablecell un identifiant spécifique? Ma solution a été conçue pour des situations où le tablecell a un ID, par exemple, "TableCell1". –

+0

Merci pour l'aide .. j'ai compris ce que je faisais mal. Je dois faire la case à cocher juste être 2 états, mais cela m'a fait aller. Merci – jvcoach23

0

Du côté du serveur, vous pouvez joindre les événements javascript aux contrôles de attributes..property

comme ci-dessous //

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