2011-04-14 123 views
0

我正在开发一个报表,它使用VB通过ASPX页面在SQL表中输出数据。我如何编码,以便其中一列包含“1”的所有行显示为红色?这是我到目前为止。这不会导致任何错误,但它也不会显示为红色。如何根据行值有条件地更改背景颜色

我不知道这是否是一个问题,但ExceedsLimit和SixInARow变量是在我存储的特效中的INT,但后来我在下面的代码中将它们声明为字符串。

Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) 
     If e.Item.ItemType = ListItemType.AlternatingItem Or e.Item.ItemType = ListItemType.Item Then 
      Dim ExceedsLimit As String 
      Dim SixInARow As String 
      Dim i As Int16 

      SixInARow = e.Item.Cells(6).Text 
      ExceedsLimit = e.Item.Cells(7).Text 

      If ExceedsLimit = "1" Or SixInARow = "1" Then 
       For i = 0 To 6 
        e.Item.Cells(i).BackColor = System.Drawing.Color.Red 
       Next 
      End If 

     End If 
    End Sub 

和HTML部分:

  <ASP:DATAGRID id="dgTable" runat="server" AUTOGENERATECOLUMNS="true" ShowHeader="true" OnItemDataBound="DataGrid1_ItemDataBound" > 
       <AlternatingItemStyle BackColor = "#eeeeee" /> 
       <HEADERSTYLE BackColor = "#336699" ForeColor = "#ffffff" Font-Bold = "true" /> 
      </ASP:DATAGRID> 

回答

1

您需要的背景色设置为Item.Style

试试这个:

If ExceedsLimit = "1" Or SixInARow = "1" Then     
    e.Item.BackColor = System.Drawing.Color.Red     
End If 
+0

谢谢!我刚刚尝试了上面的代码,但仍然没有任何行显示为红色。你还有其他建议吗? – salvationishere 2011-04-14 21:20:34

+0

我只能想到的其他事情是在比较之前修剪ExceedsLimit和SixInaRow。 – Chandu 2011-04-14 21:24:35

+0

谢谢,但这也没有奏效。谢谢你尝试! – salvationishere 2011-04-14 21:45:51