aspx文件
<ul>
<asp:Repeater runat="server" ID="rpt1" OnItemDataBound="rpt1_ItemDataBound">
<HeaderTemplate>
<li><a id="a1" href="javascript:void(0);" runat="server">Text</a></li>
</HeaderTemplate>
<ItemTemplate>
<li><a id="name" runat="server" href="javascript:void(0);">
<%# Eval("Name").ToString() %></a>
<asp:Label runat="server" ID="lblID" Visible="false" Text='<%#Eval("ID") %>'></asp:Label>
</li>
</ItemTemplate>
</asp:Repeater>
</ul>
现在这个转发器的ItemTemplate中有五个项目。我想要的是将每个锚标签的类设置为“mySprite id1,mySprite id2,mySprite id3等等。”
为此我在代码背后做了这个...
for (int i = 1; i < 6; i++)
{
Name.Attributes.Add("class", "sprite id" + i);
}
现在,当我查看页面源代码时,所有我的锚标记都被设置为class =“sprite id5”
我做错了什么? Plz help..thnx答案 0 :(得分:2)
在OnItemDataBound
事件处理程序中尝试这样的事情:
protected void rpt1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if ((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem))
{
HtmlAnchor nameAnchor = (HtmlAnchor)e.Item.FindControl("name");
nameAnchor.Attributes.Add("class", "sprite id" + (e.Item.ItemIndex + 1));
}
}
答案 1 :(得分:1)
在for
循环结束时,Name
的值为“id5”。首先计算代码隐藏中的for
循环,然后将结束值“id5”绑定到转发器(5次)。
由于<asp:Repeater>
旨在显示来自DataSource
的数据,因此您可以添加类名“id1,id2,id3,id4,id5等”。到数据的每一行,并将该字段绑定到类名。
或者,除非您使用GUID,否则您可以Concat()
将表格的id字段设为“id”