Repeater Server Side ItemTemplate

I am having a problem accessing HTML elements. On the server side, these elements exist in the itemTemplate of the repeater control.

simple code:

  <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> 

How can I access the RepeaterBG div, for example?

+4
source share
3 answers

Here is an example of how to access the management server side and apply your data to them. Be sure to add RunAt = "server" in the div tag.

add a link for the ItemDataBound event

 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")) } 

You will find that if you do this for ALL of your controls, instead of using "<% # Eval", it will be much easier for you to maintain the code.

0
source

Use the OnItemDataBound event of the relay. You also need to add the runat = "server" attribute to the RepeaterBG 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"); } } 
0
source

Your quotes around your style tag:

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

Source: https://habr.com/ru/post/1316344/


All Articles