Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在位于Asp:repeater内的面板上更改Css类_C#_Asp.net_Css - Fatal编程技术网

C# 在位于Asp:repeater内的面板上更改Css类

C# 在位于Asp:repeater内的面板上更改Css类,c#,asp.net,css,C#,Asp.net,Css,您好,感谢您花时间阅读本文 当我选择一个单选按钮时,我试图改变位于中继器内的面板的CSS类 <div> <asp:RadioButtonList OnSelectedIndexChanged="RadioButtonList1_SelectedIndexChanged" AutoPostBack="true" ID="RadioButtonList1" RepeatDirection="Horizontal" runat="server"> <

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

当我选择一个单选按钮时,我试图改变位于中继器内的面板的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>
正如您所看到的,面板已经有了类ShowDiv,然后我希望在选择/单击单选按钮时将类更改为ShowDiv2


谁能帮我找出我做错了什么或修复代码?

一个
中继器的目的是重复一些东西。所以通常它包含多个元素。因此,
RepeaterItem
NamingContainer
,它必须包含unqiue ID,您可以通过
FindControl(ID)
在其中找到控件

因此,这不起作用,因为
页面
,而不是
面板的
命名容器

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>

// ...


// ...

不是一个解决方案,只是一个观察:应该是
而不是
,谢谢您的回复,但是当我尝试这样做时,我在运行页面时出现以下错误。对象引用未设置为对象的实例。
<panel class="ShowDiv" runat="server" id="RpInnerFrame">
    // ...
</panel>
<ASP:Panel CssClass="ShowDiv" runat="server" id="RpInnerFrame">
    // ...
</ASP:Panel>