我一直在努力尝试改变asp:repeater控件中行的颜色。 我想要做的是:基于一个值,我希望能够在转发器控件中设置记录的颜色。 我试过DIV标签,无法使其正常工作。 我该怎么做? Thaks
答案 0 :(得分: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>
答案 1 :(得分: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>
答案 2 :(得分:0)
您可以通过许多不同的方式解决这个问题,具体取决于转发器需要的样子或发送给它的数据,没有最佳答案。这是一个黑客解决方法,它将评估数据并将其与正确的颜色响应进行比较。
在转发器的项目模板中,用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函数是更好的方法,只是想展示另一种方法来完成这项任务。