我正在开发一个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>
答案 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