动态更改样式表C#

时间:2012-09-05 11:52:23

标签: c# asp.net

我想在下拉列表的所选索引更改中更改一组控件的样式表。

  <asp:PlaceHolder ID="plcPreview" runat="server">
<asp:DropDownList ID="ddlTest" runat="server" >
<asp:ListItem Text="Test1"></asp:ListItem>
<asp:ListItem Text="Test2"></asp:ListItem>
</asp:DropDownList>

<asp:TextBox ID="txtTest" runat="server"></asp:TextBox><br />

<ajax:ComboBox ID="cmbTest" runat="server" DropDownStyle="DropDownList" AccessKey="f"  Width="325" Height="20"
AutoCompleteMode="SuggestAppend" CaseSensitive="False" ItemInsertLocation="OrdinalText" style="margin-left:-3px;" TabIndex="3"> 
<asp:ListItem Text="Test1"></asp:ListItem>
<asp:ListItem Text="Test2"></asp:ListItem>
</ajax:ComboBox><br />
<div class="gridmain">

<asp:GridView ID="grvTest" runat="server" AutoGenerateColumns="true"
ShowHeader="True" CssClass="tabledata" Width="100%" >
<AlternatingRowStyle CssClass="pointer"  />
<RowStyle CssClass="even pointer" />
<HeaderStyle CssClass="headings" />
</asp:GridView>
</div>
</asp:PlaceHolder> 

我想仅将不同的样式表应用于此占位符,而不是整个页面,具体取决于下拉列表中选择的值。

我在

背后的代码中使用它
                HtmlLink css = new HtmlLink();
                css.Href = "themes/" + theme + "/css/default.css";
                css.Attributes["rel"] = "stylesheet";
                css.Attributes["type"] = "text/css";
                plcPreview.Controls.Add(css);

但样式表会应用于整个页面。我希望它只应用于占位符而不是整个页面。

谢谢,

2 个答案:

答案 0 :(得分:0)

您无法仅将样式表应用于页面的某个部分。如果你想实现这个目标,你的css文件必须有特定的css选择器,它们只匹配你要设置样式的部分以及它里面的所有内容。

例如,在您的CSS中,您可以拥有以下内容:

<asp:placeholder id="plcPreview" ...>
   <div class="c"

的CSS:

#plcPreview
{
   color:black;
}

#a.c
{
    color:red;
}

等等......

css文件中与占位符以外的其他元素匹配的任何其他内容也将匹配并设置样式。

答案 1 :(得分:0)

加载时的样式表对整个页面都是可见的,您似乎正在加载样式表并将其添加到占位符,这将使得在呈现页面后DOM的所有元素都可以看到它。

我认为最好的方法是使用JQuery addClass,试一试。