我遇到了访问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,例如?
答案 0 :(得分:0)
使用转发器的OnItemDataBound事件。您还需要将runat =“server”属性添加到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");
}
}
答案 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")%>'>