更改由itemView在itemCreated事件中创建的行的样式

时间:2010-08-12 12:24:40

标签: c# asp.net listviewitem

渲染数据绑定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标签来更改样式?

非常感谢, 斯蒂芬

2 个答案:

答案 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;";

    }

其中的一些逻辑仍然不正确等,只是为了说明我如何解决问题以动态改变每一行的背景颜色。