您好,感谢您花时间阅读本文。
当我选择 RadioButton 时,我正在尝试更改位于 Repeater 内的面板的 CSS 类。
<div>
<asp:RadioButtonList OnSelectedIndexChanged="RadioButtonList1_SelectedIndexChanged" AutoPostBack="true" ID="RadioButtonList1" RepeatDirection="Horizontal" runat="server">
<asp:ListItem Selected="True">Show Gallery</asp:ListItem>
<asp:ListItem>Show List</asp:ListItem>
</asp:RadioButtonList>
</div>
<div class="RpOutterFrame" runat="server" id="RpOutterFrame">
<asp:Repeater runat="server" ID="RP">
<ItemTemplate>
<panel class="ShowDiv" runat="server" id="RpInnerFrame">
<img runat="server" style="width: 80px;" id="ModelImg" class="ModelImg" src='<%# string.Format("~/Content/Img/ModelImg/{0}", Eval("Image")) %>' />
<br />
<%# Eval("Model") %>
</panel>
</ItemTemplate>
</asp:Repeater>
</div>
我的 C#:
protected void RadioButtonList1_SelectedIndexChanged(object sender, EventArgs e)
{
if (RadioButtonList1.Items[0].Selected == true)
{
RpOutterFrame.Attributes["class"] = "RpOutterFrame";
Panel panel = (Panel)this.FindControl("RpInnerFrame");
panel.CssClass = "ShowDiv2";
}
}
如您所见,Panel 已经有 ShowDiv 类,然后我希望在我选择/单击 Radiobutton 时将类更改为 ShowDiv2。
谁能帮我弄清楚我做错了什么或修复代码?
最佳答案
Repeater
的目的是重复某些内容。所以通常它包含多个元素。因此 RepeaterItem
是 NamingContainer
,它必须包含唯一的 ID,您可以在其中通过 FindControl(ID)
找到您的控件。
所以这不起作用,因为 this
是 Page
而 不是 的
:NamingContainer
>面板
Panel panel = (Panel)this.FindControl("RpInnerFrame");
panel.CssClass = "ShowDiv2";
你必须循环所有元素:
foreach(RepeaterItem item in RP.Items)
{
Panel panel = (Panel)item.FindControl("RpInnerFrame");
panel.CssClass = "ShowDiv2";
}
除此之外,您应该使用 ASP:Panel
而不是 Panel
。
所以改变
<panel class="ShowDiv" runat="server" id="RpInnerFrame">
// ...
</panel>
到
<ASP:Panel CssClass="ShowDiv" runat="server" id="RpInnerFrame">
// ...
</ASP:Panel>
关于c# - 更改位于 Asp :repeater 内的面板上的 Css 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23269817/