Repeater ItemTemplate服务器端

时间:2010-07-20 19:42:42

标签: c# asp.net

我遇到了访问HTML元素的问题。在服务器端,这些元素存在于转发器控件的itemTemplate中。

简单代码:

    <asp:Repeater ID="rptList" runat="server" onitemcreated="rptList_ItemCreated">
    <HeaderTemplate>
               <div id="accordionGiftLelo">
    </HeaderTemplate>
    <ItemTemplate>


                         <div class="set">
                         <div class="title"><img src='<%# Eval("TitleImgUrl")%>'  runat="server" width="198" height="29"  /></div>
                         <div ID="RepeaterBG" class="content"  style="background-color:<%# Eval("ContentBackground")%>">
                             <%--<a href='<%# Eval("ContentUrl")%>'><img src='<%# Eval("ContentImgUrl")%>' alt="Embroidered Devil Eyes" width="198" height="198" border="0" /></a>--%>
                             <div style="width:198"><asp:Literal ID="Literal1" runat="server"  Text='<%# Eval("ContentImgUrl")%>'></asp:Literal></div>
                         </div>
                         </div>

    </ItemTemplate>

    <FooterTemplate>
                         </div>
    </FooterTemplate>

    </asp:Repeater>

我如何访问RepeaterBG div,例如?

3 个答案:

答案 0 :(得分:0)

使用转发器的OnItemDataBound事件。您还需要将runat =“server”属性添加到R​​epeaterBG div。

    using System.Web.UI.HtmlControls;

    protected void rptList_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item)
        {
            var div = (HtmlGenericControl)e.Item.FindControl("RepeaterBG");

        }
    }

答案 1 :(得分:0)

以下是如何访问控制服务器端并将数据应用于它们的示例。确保将RunAt =“server”添加到div标签。

添加ItemDataBound事件的引用

rptList.ItemDataBound += rptList_ItemDataBound;

private void rptList_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
{   
    if (e.Item.ItemType != ListItemType.Item && e.Item.ItemType != ListItemType.AlternatingItem) return;

    HtmlControls.HtmlGenericControl RepeaterBG = (HtmlControls.HtmlGenericControl)e.Item.FindControl("RepeaterBG");

    Data.DataRowView dr = (Data.DataRowView)e.Item.DataItem;

    RepeaterBG.Style.Add("background-color", dr("ContentBackground"))
}

你会发现,如果你为所有控件执行此操作,而不是使用“&lt;%#Eval”,那么代码将更容易维护。

答案 2 :(得分:0)

它的样式标记周围的引号:

<div ID="RepeaterBG" class="content"  style='background-color:<%# Eval("ContentBackground")%>'>