2009-11-19 3 views
0

À l'intérieur de mon fichier aspx, j'ai le code html suivant dans un répéteur: <div class="someItem ">.Comment ajouter "dynamiquement" la classe css?

Maintenant, si Eval("Approved") == true, alors je voudrais ajouter la classe approuvé à la div. Par conséquent, le nouveau code HTML serait <div class="someItem approved">.

J'ai essayé de faire quelque chose comme ceci:

<%# if(Eval("Approved")) approved %> 

Mais cela ne fonctionne pas très bien. Des idées?

Répondre

1

Si ne peut pas travailler en ligne databinding #.

Vous pouvez contourner ce problème en quelque chose comme ceci:

<%# isApproved = Convert.ToBoolean(Eval("Approved").ToString()) %> 
<% if(isApproved){ %> 
    <div class="someItem approved"> 
<%}%> 

Et ne pas oublier de déclarer isApproved comme protégée dans le code derrière.

s'il vous plaît aussi jeter un oeil à cette question:

Is it possible to use Data-Binding Expressions directly in markup to show/hide content?

qui peut répondre à la partie la plus importante de votre question.

+0

Salut Amr. Merci pour la bonne réponse. Votre première ligne ne stocke pas la valeur dans la variable 'isApproved'. Il sort juste le texte "vrai" ou "faux". J'espérais éviter le code derrière. Mais il semble que je dois appeler une fonction et passer l'objet Eval ("approuvé"). – Steven

1

peut-être qu'il serait préférable d'envisager cette option si l'élément est approuvé <div id="someItem"> puis ajoutez la classe approuvé si le eval de tout ce qui est vrai ..

<div id="someItem" "<%# Eval("Approved") ? Response.Write("class=\"approved\"") : "" %>"> 
+0

pour utiliser eval vous devez mettre #, votre exemple ne fonctionnera pas –

+0

oui vous avez raison mon mauvais .. – ant

2

Vous pouvez faire la div un contrôle du serveur comme ->

<div id="myDIV" class="myClass" runat="server"></div>. 

Ensuite, vous pouvez accéder directement à partir de votre code derrière, comme

myDIV.Attributes["class"] = "classOfYourChoice"; 

Voir cette ->How to edit CSS style of a div using C# in .NET

+0

Hum ... Je ne savais pas que je pouvais faire des balises html dans un contrôle serveur. Merci pour le conseil! – Steven

0

Vous pouvez utiliser un panneau asp.net et contrôler l'action de celui-ci à partir du code derrière. Un panneau se transforme en DIV et vous avez accès à sa classe CssClass pendant l'exécution.

Questions connexes