我正在尝试根据第三列的值
向表格单元格添加一个css类我的标记是......
<ItemTemplate>
<tr id="row">
<td><%# DataBinder.Eval(Container.DataItem, "Won")%></td>
<td><%# DataBinder.Eval(Container.DataItem, "Lost")%></td>
<td><%# DataBinder.Eval(Container.DataItem, "Result")%></td>
</tr>
</ItemTemplate>
如果Result
的值为1,则将css-class添加到Won
表格单元格。
如果Result
的值为2,则将css-class添加到Lost
表格单元格
我尝试使用转发器控件的ItemCreated
事件并完全丢失了!
有什么想法吗?
答案 0 :(得分:4)
您必须使用repeater的ItemDataBound方法。
修改强>
如果要更改<td>
的类,则必须向其添加属性runat="server"
。您的
标记可能如下所示:
<asp:Repeater ID="rptMyRepeater" runat="server" OnItemDataBound="rptMyRepeater_ItemDataBound">
<HeaderTemplate>
<table>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%# DataBinder.Eval(Container.DataItem, "Won") %> </td>
<td><%# DataBinder.Eval(Container.DataItem, "Lost") %> </td>
<td runat ="server" id="tdResult"><%# DataBinder.Eval(Container.DataItem, "Result") %>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
代码:
protected void rptMyRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
HtmlTableCell tdResult = e.Item.FindControl("tdResult") as HtmlTableCell;
if (DataBinder.Eval(e.Item.DataItem, "Result").ToString() == "1")
{
tdResult.Attributes["class"] = "Won";
}
else if (DataBinder.Eval(e.Item.DataItem, "Result").ToString() == "2")
{
tdResult.Attributes["class"] = "Lost";
}
}
}