0

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

  <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);

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

谢谢,

4

2 回答 2

0

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

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

于 2012-09-05T11:57:16.310 回答
0

您不能仅将样式表应用于页面的一部分。如果您想实现该目标,您的 css 文件必须具有特定的 css 选择器,这些选择器仅匹配您要设置样式的部分以及其中的所有内容。

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

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

CSS:

#plcPreview
{
   color:black;
}

#a.c
{
    color:red;
}

等等...

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

于 2012-09-05T11:56:47.760 回答