如何在VB和SQL中有条件地对代码行进行着色

时间:2011-04-15 15:40:03

标签: asp.net sql vb.net gridview

我正在开发一个ASPX文件来返回SQL表中的所有记录。我可以成功地显示所有数字,但现在我希望某些行在满足特定条件时更改其背景颜色。所以我想比较我的两个列到某个值,如果它超过这个值,那么它应该改变该行的颜色。我该如何修复以下代码?主要问题是我不知道如何指定要比较的数据列。没有错误,但我的行也没有颜色变化。

ASPX摘录:

        Sub PrintMessageGrid_RowDataBound(ByVal sender As Object, _
   ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs)
        If e.Row.RowType = DataControlRowType.DataRow Then
            Dim Six_In_A_Row As Integer = _
     Convert.ToInt32(DataBinder.Eval(e.Row.DataItem, _
     "Six_In_A_Row"))
            If Six_In_A_Row = "1" Then
                ' color the background of the row yellow
                e.Row.BackColor = Drawing.Color.Yellow
            End If
        End If
    End Sub

我的HTML:

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

2 个答案:

答案 0 :(得分:1)

我认为问题是如何访问单元格中的值...也许您可以通过使用GridViewRowEventArgs来访问单元格值:

e.Row.Cells(1).Text 

也许你的代码也有效......你只需改变条件! 您正在将整数与字符串进行比较...因此必须在此代码中更改代码:

If Six_In_A_Row = 1 Then .....

答案 1 :(得分:0)

。在DataBinder中缺少.Tostring()可能是一个问题。

If Six_In_A_Row = "1" Then中,您将int与string进行比较。做Six_In_A_Row.ToString() = "1" then

使用此示例:http://www.dotnetwatch.com/change-the-specific-Row--Col389_AR.aspx

e.Row.BackColor = System.Drawing.Color.FromArgb(255,234,255); // Full row color
e.Row.Cells[3].BackColor = System.Drawing.Color.Yellow; // Column color