2008-09-23 3 views
16

j'ai plusieurs < li> éléments avec différents ids page ASP.NET:Comment changer la classe CSS d'un élément de page HTML en utilisant ASP.NET?

<li id="li1" class="class1"> 
<li id="li2" class="class1"> 
<li id="li3" class="class1"> 

et peuvent changer leur classe en utilisant JavaScript comme ceci:

li1.className="class2" 

Mais est-il un moyen de changer < li> classe d'élément utilisant ASP.NET? Il pourrait être quelque chose comme:

WebControl control = (WebControl)FindControl("li1"); 
control.CssClass="class2"; 

Mais FindControl() ne fonctionne pas comme prévu. Aucune suggestion?

Merci d'avance!

Répondre

4

La méthode FindControl recherche les contrôles serveur. Autrement dit, il cherche des contrôles avec l'attribut « runat » sur « serveur », comme dans:

<li runat="server ... ></li> 

Parce que vos < balises li > ne sont pas des contrôles serveur, FindControl ne peut pas les trouver. Vous pouvez ajouter l'attribut "runat" à ces contrôles ou utiliser ClientScript.RegisterStartupScript pour inclure un script côté client pour manipuler la classe, par ex.

System.Text.StringBuilder sb = new System.Text.StringBuilder(); 
sb.Append("<script language=\"javascript\">"); 
sb.Append("document.getElementById(\"li1\").className=\"newClass\";") 
sb.Append("</script>"); 
ClientScript.RegisterStartupScript(this.GetType(), "MyScript", sb.ToString()); 
4

vous devez définir runat = "server" comme:

<li id="li1" runat="server">stuff</li> 
12

FindControl fonctionnera si vous ajoutez runat = "server" dans le <li>

<li id="li1" runat="server">stuff</li> 

code côté Sinon, vous serveur peut ne le vois pas.

+3

Don N'oubliez pas que lorsque vous ajoutez runat = "server" à l'élément LI, vous devez modifier le JavaScript pour trouver l'élément en utilisant le serveur La propriété ClientID de ol –

29

Ajouter runat="server" dans votre page HTML

utilisent alors la propriété d'attribut dans votre page asp.Net comme celui-ci

li1.Attributes["Class"] = "class1"; 
li2.Attributes["Class"] = "class2"; 
5

Ce trouvera l'élément li et définir une classe CSS sur il.

using System.Web.UI.HtmlControls; 

HtmlGenericControl liItem = (HtmlGenericControl) ctl.FindControl("liItemID"); 
liItem.Attributes.Add("class", "someCssClass"); 

Rappelez-vous d'ajouter votre attribut runat="server" comme mentionné par d'autres.

0

Vous pouvez également essayer cela aussi si tu veux ajouter quelques peu de styles:

li1.Style.add("color","Blue"); 
li2.Style.add("text-decoration","line-through"); 
1

Feuille Dev a fourni la solution pour cela, mais à la place de « ctl » vous devez insérer « Maître ».

Il travaille pour moi en tout cas:

using System.Web.UI.HtmlControls; 

HtmlGenericControl liItem = (HtmlGenericControl) ctl.FindControl("liItemID"); 
liItem.Attributes.Add("class", "someCssClass"); 
3

S'il vous plaît essayer si vous voulez appliquer le style:

li1.Style.Add("background-color", "black"); 

Pour CSS, vous pouvez ci-dessous la syntaxe:

li1.Attributes.Add("class", "clsItem"); 
Questions connexes