2008-09-23 15 views
16

Ich habe mehr < li> Elemente mit unterschiedlichen ids auf ASP.NET-Seite:Wie ändert man die CSS-Klasse eines HTML-Seitenelements mit ASP.NET?

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

und kann ihre Klasse ändern JavaScript wie folgt aus:

li1.className="class2" 

Aber ist es eine Möglichkeit, < zu ändern li> Elementklasse mit ASP.NET?

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

Aber Findcontrol() funktioniert nicht wie ich erwartet hatte: Es könnte etwas Ähnliches sein. Irgendwelche Vorschläge?

Vielen Dank im Voraus!

Antwort

4

Die FindControl-Methode sucht nach Serversteuerelementen. Das heißt, es für die Kontrollen mit dem Attribut „runat“ auf „Server“ sieht, wie in:

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

Weil Ihre <li>-Tags sind nicht Server-Steuerelemente, Findcontrol kann sie nicht finden. Sie können diesen Steuerelementen das Attribut "runat" hinzufügen oder mithilfe von ClientScript.RegisterStartupScript ein clientseitiges Skript zur Bearbeitung der Klasse hinzufügen, z.

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

Sie müssen Runat gesetzt = "server" wie:

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

Findcontrol wird funktionieren, wenn Sie = "Server" in der <li>

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

Andernfalls Sie Server-Side-Code kann runat umfassen sehe es nicht.

+3

Don Vergessen Sie nicht, dass Sie beim Hinzufügen des runat = "server" zum LI-Element das JavaScript ändern müssen, um das Element zu finden, das den Server-Contr verwendet ols ClientID-Eigenschaft –

29

hinzufügen runat="server" in Ihrer HTML-Seite

dann das Attribut Eigenschaft in Ihrer asp.Net Seite wie diese Dieses

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

verwenden das li-Element finden und eine CSS-Klasse festgelegt auf es.

using System.Web.UI.HtmlControls; 

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

Denken Sie daran, Ihre runat="server" Attribut hinzufügen, wie von anderen erwähnt.

0

Sie können auch versuchen, diese auch, wenn u einige wenige Arten hinzufügen möchten:

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

Blatt Dev zur Verfügung gestellt, die Lösung für diese, aber an der Stelle von „ctl“ Sie brauchen „Master“ einzufügen.

Es ist für mich arbeiten sowieso:

using System.Web.UI.HtmlControls; 

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

Bitte diese versuchen, wenn Sie Stil anwenden möchten:

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

Für CSS können Sie unter Syntax versuchen:

li1.Attributes.Add("class", "clsItem"); 
Verwandte Themen