2010-05-17 70 views
0

嘿家伙我试图做一些非常简单的..我检查数据列中的数据列,如果它是> 0我想要项目在数据列表中的背面颜色是绿色如果< 0保持透明......datalist itemdatabound事件有条件改变项目bg颜色的条件

if (e.Item.ItemType == ListItemType.Item || 
     e.Item.ItemType == ListItemType.AlternatingItem) 
    { 
     DataRowView drv = (DataRowView)(e.Item.DataItem); 
     int rating = int.Parse(drv.Row["rating"].ToString()); 

     if (rating > 0) 
     { 
      e.Item.BackColor = System.Drawing.Color.Green; 
     } 

    } 

我已经调试台阶的贯通,它的命中所有的颜色正好是不会改变的条件。我知道它必须是一些简单的我只是看不到它。

回答

2

您需要使用e.Item.FindControl实例化要更改其背景颜色的控件实例。

if (e.Item.ItemType == ListItemType.Item || 
    e.Item.ItemType == ListItemType.AlternatingItem) 
    { 
     DataRowView drv = (DataRowView)(e.Item.DataItem); 
     int rating = int.Parse(drv.Row["rating"].ToString()); 

     if (rating > 0) 
     { 
      Label lbl = (Label)e.Item.FindControl("yourLabelIDHere"); 
      lbl.BackColor = System.Drawing.Color.Green; 

     } 
    } 
+0

我想改变数据列的行颜色.. – jr3 2010-05-18 16:40:44

+0

你需要用DIV包围你的ItemTemplate内容,并向DIV添加一个runat =“server”,并确保有一个ID。 然后,在ItemDatabound上,当您的条件得到满足时, div.Attributes.Add(“style”,“background-color:Green;”); – TheGeekYouNeed 2010-05-18 17:14:44

1

把这个代码放在哪里?它需要在OnRowDataBound()事件中。看起来你可能会把上面的内容放在OnItemDataBound()之内。

+0

嘿大卫我正在使用DataList,我想你在想一个gridview?虽然感谢您的尝试! – jr3 2010-05-18 16:46:33

+0

对不起,错过了那一点!很高兴现在正在工作。 – 2010-05-18 17:51:21