1

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

非常感谢,斯特凡

4

2 回答 2

1

TR 标签必须有 runat="server" 才能使用服务器端代码;但是,您可以通过检查作为该项目的子项的控件来注入它;可能有一个带有 HTML 的 Literal 或 LiteralControl,您可以使用字符串操作来注入...

于 2010-08-12T12:41:05.493 回答
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;";

    }

那里的一些逻辑仍然不正确等,只是为了展示我如何解决问题以动态更改每行的背景颜色。

于 2010-08-12T14:23:18.660 回答