渲染数据绑定ListView时,我想根据结果动态设置每行的背景颜色,在我的情况下是红色,橙色和绿色。
protected void ListView1_ItemCreated(object sender, ListViewItemEventArgs e)
{
DataRow myRow;
DataRowView myRowView;
myRowView = (DataRowView)e.Item.DataItem;
myRow = myRowView.Row;
if (myRow[2].ToString().CompareTo("") == 1)
{
// Colour coding here..
}
}
是否可以到达每行的TR标签来更改样式?
非常感谢, 斯蒂芬
答案 0 :(得分:1)
TR标签必须有runat =“server”才能使用服务器端代码;但是,通过检查作为项目子项的控件,您可以在没有它的情况下将其注入;可能有一个带有HTML的Literal或LiteralControl,你可以使用字符串操作来注入......
答案 1 :(得分:0)
我找到了解决问题的方法,得到了Brian的一些好帮助。
我有一个ListView,我添加了一个id标签(trRow)和标签runat =“server”,如下所示:
<AlternatingItemTemplate>
<tr id="trRow" runat="server" style="background-color:#FFF8DC;">
在后面的代码中它看起来像这样:
protected void ListView1_ItemCreated(object sender, ListViewItemEventArgs e)
{
DataRow myRow;
DataRowView myRowView;
myRowView = (DataRowView)e.Item.DataItem;
myRow = myRowView.Row;
System.Web.UI.HtmlControls.HtmlTableRow myTR = (System.Web.UI.HtmlControls.HtmlTableRow)e.Item.FindControl("trRow");
if (myRow[2].ToString().CompareTo("") == 1)
{
myTR.Style.Value = "background-color:#FF0000;color: #000000;";
} else
myTR.Style.Value = "background-color:#00FF00;color: #000000;";
}
其中的一些逻辑仍然不正确等,只是为了说明我如何解决问题以动态改变每一行的背景颜色。