有条件地改变ItemTemplate边框颜色

时间:2013-10-11 16:55:15

标签: asp.net border itemtemplate

我在Repeater中有一个ItemTemplate。这是我的代码(原谅内联样式,我只是把它放在一起):

     <asp:Repeater ID="Repeater1" runat="server">
            <ItemTemplate>
                <div style="background-color: Silver; border-style: solid; display: inline-block; float: left; margin: 5px; overflow: hidden;">
                    <div style="text-align: center">
                        <asp:Label ID="lblImage" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "image") %>'></asp:Label>
                    </div>
                    <div>
                        <%# DataBinder.Eval(Container.DataItem, "url") %>
                    </div>
                    <div style="text-align: center;">
                        <asp:HyperLink ID="requestLink" runat="server" Text="Original" NavigateUrl='<%# DataBinder.Eval(Container.DataItem, "requestUrl") %>'>
                        </asp:HyperLink>
                    </div>
                </div>
            </ItemTemplate>
        </asp:Repeater>

目前,输出如下所示: enter image description here

根据我程序中的某些条件,我想更改项目模板的边框颜色(绿色,黄色或红色)。我可以在后面的代码中执行此操作吗?

1 个答案:

答案 0 :(得分:2)

您可以使用Repeater控件的ItemDataBound事件。

我想建议使用CSS来设置样式,这比使用代码背后的代码硬编码颜色更容易维护。

以下示例使用Panel控件作为包装器,以便根据逻辑对其进行样式设置。

<asp:Repeater ID="Repeater1" runat="server" 
    OnItemDataBound="Repeater1_ItemDataBound">
    <ItemTemplate>
        <asp:Panel runat="server" ID="Panel1">
            <div style="text-align: center">
            <asp:Label ID="lblImage" runat="server" Text='<%# Eval("image") %>'/>
            </div>
            <div>
                <%# Eval("url") %>
            </div>
            <div style="text-align: center;">
                <asp:HyperLink ID="requestLink" runat="server" 
               Text="Original" NavigateUrl='<%# Eval("requestUrl") %>'>
                </asp:HyperLink>
            </div>
        </asp:Panel>
    </ItemTemplate>
</asp:Repeater>


protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || 
      e.Item.ItemType == ListItemType.AlternatingItem)
    {
        var panel1 = e.Item.FindControl("Panel1") as Panel;
        var rating = ((Evaluation) e.Item.DataItem).Rating;

        if (rating == "Good")
        {
            panel1.CssClass = "good";
        }
        else if (rating == "Bad")
        {
            panel1.CssClass = "bad";    
        }
    }
}