2008-09-23 16 views
16

tengo varios < li> elementos con diferentes identificadores en la página ASP.NET:¿Cómo cambiar la clase de CSS de un elemento de página HTML utilizando ASP.NET?

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

y pueden cambiar su clase utilizando JavaScript así:

li1.className="class2" 

Pero hay una manera de cambiar < li> clase de elemento usando ASP.NET? Podría ser algo así como:

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

Pero FindControl() no funciona como esperaba. ¿Alguna sugerencia?

¡Gracias de antemano!

Respuesta

4

El método FindControl busca los controles del servidor. Es decir, se busca a los controles con el atributo "runat" en "servidor", como en:

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

Debido a que sus etiquetas <li> no son controles de servidor, FindControl no los encuentra. Puede agregar el atributo "runat" a estos controles o usar ClientScript.RegisterStartupScript para incluir algún script del lado del cliente para manipular la clase, p.

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

debe establecer runat = "servidor" como:

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

FindControl funcionará si se incluyen runat = "server" en el <li>

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

De lo contrario, el código del lado del servidor puede 't' ver '.

+3

Don olvide que cuando agrega runat = "server" al elemento LI, deberá modificar el JavaScript para encontrar el elemento utilizando el servidor contr la propiedad ClientID de ol –

29

Añadir runat="server" en su página HTML

continuación, utilizar la propiedad de atributo en su página asp.Net como esto

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

Este se encuentra el elemento li y establecer una clase CSS de eso.

using System.Web.UI.HtmlControls; 

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

no olvide añadirlo a su atributo runat="server" como han mencionado otros.

0

También puede probar esto también si quieres añadir algunos pocos estilos:

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

Hoja Dev proporciona la solución para esto, pero en lugar de "CTL" es necesario insertar "Maestro".

Se está trabajando para mí de todos modos:

using System.Web.UI.HtmlControls; 

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

Por favor, intente esto si desea aplicar el estilo:

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

Por CSS, se puede tratar a continuación la sintaxis:

li1.Attributes.Add("class", "clsItem"); 
Cuestiones relacionadas