2011-04-15 49 views
2

我正在開發一個ASPX文件以返回SQL表中的所有記錄。我可以成功地顯示所有數字,但是現在我希望某些行在滿足特定條件時可以更改其背景顏色。所以我想將我的兩列與某個值進行比較,如果它超過此值,那麼它應該改變該行的顏色。我如何修復下面的代碼?主要問題是我不知道如何指定一列數據進行比較。沒有錯誤,但我的行也沒有顏色變化。如何在VB和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> 

回答

1

我認爲這個問題是你如何在細胞訪問值...也許你可以通過使用訪問單元格的值GridViewRowEventArgs像這樣:

e.Row.Cells(1).Text 

也許你的代碼工作得太...你只能改變條件! 你是一個字符串比較整數...所以你的代碼必須在此代碼進行更改:

If Six_In_A_Row = 1 Then ..... 
+0

u能解釋一下? – salvationishere 2011-04-15 16:17:20

0

的ToString()在DataBinder的缺失可能是一個問題。

而且

If Six_In_A_Row = "1" Then,您正在使用的字符串比較INT。做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 
相關問題