代码之家  ›  专栏  ›  技术社区  ›  StefanE

更改itemCreated事件中ListView创建的行的样式

  •  1
  • StefanE  · 技术社区  · 14 年前

    当呈现一个数据绑定的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..    
            }
    
        }
    

    非常感谢,

    2 回复  |  直到 14 年前
        1
  •  1
  •   Brian Mains    14 年前

    TR标签必须具有runat=“server”才能使用服务器端代码;但是,通过检查作为项的子项的控件,您可以在不使用该控件的情况下将其注入;HTML中可能有一个Literal或Literal控件,您可以使用字符串操作来注入。。。

        2
  •  0
  •   StefanE    14 年前

    <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;";
    
        }
    

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