2012-09-05 102 views
0

我想更改下拉列表中所選索引更改的一組控件的樣式表。動態更改樣式表C#

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

但樣式表被應用到整個頁面。我希望它只應用於佔位符而不是整個頁面。

謝謝,

回答

0

您不能僅將樣式表應用於頁面的一部分。如果你想達到這個目標,你的css文件必須有特定的CSS選擇器,它們只能匹配你想要的樣式部分和其中的所有部分。

例如,在你的CSS,你可以有以下幾種:

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

CSS:

#plcPreview 
{ 
    color:black; 
} 

#a.c 
{ 
    color:red; 
} 

等等......

別的那是在CSS文件匹配佔位符外的其他元素也將匹配和設置樣式。

0

加載的樣式表對整個頁面都是可見的,似乎您正在加載樣式表並將其添加到佔位符中,一旦呈現頁面,它將使其對所有DOM元素都可見。

我認爲最好的方法是使用JQuery addClass,試試看。