2010-01-05 5 views
18

Je veux ajouter un style A:Hover à un contrôle HyperLink du code derrière.Comment ajouter du style à partir du code derrière?

Je peux le faire comme ceci:

HyperLink hlRow = new HyperLink(); 
hlRow.Style.Add("color", "#000000"); 
hlRow.Style.Add("text-decoration", "none"); 

Mais comment puis-je ajouter des styles pour A:Hover pour le contrôle de lien hypertexte? Ai-je besoin de définir une classe et d'associer cette classe à ce contrôle, si oui comment?

Répondre

2

:hover est un sélecteur et non un style. Ce que vous faites dans votre exemple est d'ajouter des styles en ligne à un élément, et un sélecteur équivalent pour cela n'a évidemment pas beaucoup de sens.

Vous pouvez ajouter une classe à votre lien: hlRow.CssClass = 'abc'; Et définir votre classe en tant que telle:

a.abc:hover { 
    ... 
} 
+0

Hover est une pseudo-classe, pas un sélecteur; c'est un sélecteur: 'ul li a {...}' – roosteronacid

+1

bien oui, * une partie d'un * sélecteur est ce que je voulais dire: toujours dans le sens où essayer de l'ajouter à un élément n'a pas de sens, comme il est plutôt utilisé pour * trouver * des éléments correspondants. mais oui, merci pour la remarque –

+0

Hé les gars, j'ai une question de suivi, et si j'ai un élément de menu dans le code ASPX, que je veux lui assigner la classe CSS. comment puis-je accéder à cette propriété qui est une propriété webcontrol et qui manque dans le contrôle MenuItem? Im essayant de faire une chose simple qui est de créer le style pour le mode "Sélectionné" ... ainsi l'utilisateur saura quelle page est la page active actuelle. aucun moyen d'accomplir cela? –

26

Vous pouvez utiliser la propriété CssClass du lien:

LiteralControl ltr = new LiteralControl(); 
     ltr.Text = "<style type=\"text/css\" rel=\"stylesheet\">" + 
        @".d 
        { 
         background-color:Red; 
        } 
        .d:hover 
        { 
         background-color:Yellow; 
        } 
        </style> 
        "; 
     this.Page.Header.Controls.Add(ltr); 
     this.HyperLink1.CssClass = "d"; 
+0

Merci. BTW, j'ai la page ASPX, je peux directement écrire la classe CSS là-bas au lieu d'utiliser LiteralControl!:-) – Manish

+0

Je serais ravi de t'avoir gagné mais pour une raison folle, ma limite de vote est atteinte pour "aujourd'hui" (ce qui n'est pas mon aujourd'hui, mais les Etats-Unis aujourd'hui) donc je ne peux pas. Donc à la place, je vais laisser ce commentaire. Et peut-être que lorsque mon interdiction de voter sera levée, je me souviendrai de ce post et je reviendrai le voter :) –

+1

Merci beaucoup soyeux. Bonne chance. –

5

Essayez ceci:

Html Markup

<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="#">HyperLink</asp:HyperLink> 

code

using System.Drawing; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

protected void Page_Load(object sender, EventArgs e) 
{ 
    Style style = new Style(); 
    style.ForeColor = Color.Green; 
    this.Page.Header.StyleSheet.CreateStyleRule(style, this, "#" + HyperLink1.ClientID + ":hover"); 
} 
+0

Il he..nice et rusé .. !! – Manish

0

Vous ne pouvez pas.

Il suffit donc ne sont pas applicables styles directement comme ça, et appliquer une classe « foo », puis définir que dans votre spécification CSS:

a.foo { color : orange; } 
a.foo:hover { font-weight : bold; } 
2

Assurez-vous également que la page ASPX a AutoEventWireup="true" et non AutoEventWireup="false"

9

Utilisez

HyperLink hlRow = new HyperLink(); 
hlRow.Attributes.Add("Style", "color:#000000"); 
1

Si aucun fichier disponible pour téléchargement, je devais désactiver le asp: LinkButton changer gris et éliminer le Ss- ine sur le vol stationnaire. Cela a fonctionné:

.disabled { 
    color: grey; 
    text-decoration: none !important; 
} 

LinkButton button = item.FindControl("lnkFileDownload") as LinkButton; 
button.Enabled = false; 
button.CssClass = "disabled"; 
Questions connexes