我一直在尝试我所知道的一切来更改 asp:repeater 控件中一行的颜色。我想要做的是:基于一个值,我希望能够在转发器控件中设置记录的颜色。我试过 DIV 标签,不能让它工作。我该怎么做?塔克斯
问问题
3759 次
3 回答
5
使用 ItemTemplate 中的 <%# %> 数据绑定语法进行条件格式化:
<asp:Repeater runat="server" ID="rpt">
<ItemTemplate>
<div class="<%# Container.ItemIndex % 2 ? "even" : "odd" %>">
</div>
<div class="<%# Eval("PropertyOfDataSource") %>">
</div>
</ItemTemplate>
</asp:Repeater>
于 2009-05-26T17:44:24.847 回答
4
在后面的代码中尝试这样的事情
protected void rpt_OnItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.DataItem != null)
{
string color = (string)DataBinder.Eval(e.Item.DataItem, "RowColor");
HtmlTableRow rowToColor = (HtmlTableRow)e.Item.FindControl("Row");
rowToColor.Attributes.CssStyle.Add("background-color", color );
}
}
和类似的东西在aspx页面
<asp:Repeater ID="rpt" runat="server" OnItemDataBound="rpt_OnItemDataBound">
<ItemTemplate>
<tr id="Row" runat="server">
<td>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
于 2009-05-26T17:14:57.140 回答
0
您可以通过很多不同的方式来解决这个问题,并且根据您的中继器需要的外观或您发送给它的数据,没有最佳答案。这是一个 hack 解决方法,它将评估数据并比较它以获得正确的颜色响应。
在转发器的项目模板中,用 div 将其包围。
<div style="background-color:<%# GetBG((string)(DataBinder.Eval(Container.DataItem,"DataField")))%>">
并且在后面的代码中有一个函数来决定
public string GetBG(string demo)
{
if (demo == "TestData2")
return "yellow";
return "Green";
}
这不是一个很好的方法,而且非常浪费。onDataBind 函数将是更好的方法,只是想展示另一种完成此任务的方法。
于 2009-05-26T17:40:24.873 回答