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

ページの一部だけにスタイルシートを適用することはできません。その目標を達成したい場合は、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 に答える
0

ロードされたときのスタイルシートはページ全体に表示されます。スタイルシートをロードしてプレースホルダーに追加しているようです。これにより、ページがレンダリングされると、DOMのすべての要素に表示されます。

私が思う最善のアプローチは、 JQueryaddClassを使用することです。試してみてください。

于 2012-09-05T11:57:16.310 に答える