c# - 更改位于 Asp :repeater 内的面板上的 Css 类

标签 c# asp.net css

您好,感谢您花时间阅读本文。

当我选择 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 的目的是重复某些内容。所以通常它包含多个元素。因此 RepeaterItemNamingContainer,它必须包含唯一的 ID,您可以在其中通过 FindControl(ID) 找到您的控件。

所以这不起作用,因为 thisPage不是 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/

相关文章:

c# - SQL 注入(inject)的 OData 问题

c# - 替换 C# 中的类实现

asp.net - 如何使用 Ninject 注入(inject)一个 asp.net (mvc2) 自定义成员提供程序?

c# - 如何在 linq c# 中使用子字符串以及如何在计划文本中绑定(bind) convert html 标签。在 asp.net 中绑定(bind) GridView 的问题

javascript - (jscolor) 如何保持从 DOM 创建的按钮/输入为空(仅限颜色)

c# - 如何在 C# 中的 AWS Lambda 项目中设置和获取环境变量

c# - 通过反射使用私有(private)字段对引用结构进行单元测试

.net - log4net - FileAppender 在文件开头写入新条目

html - 如果没有任何类型的 "margin cheat",我的按钮位置如何居中?

javascript - 如何在选择标签中显示多行文本标题?