2013-05-14 30 views
0

我有一個只有幾行的網格。在滿足一定條件的情況下,我需要改變滿足條件的行的背景顏色。我在網格的rowdatabound事件中執行此操作,但在頁面回發期間它會丟失顏色。我如何解決這個問題?我的代碼就像這樣。在頁面回發期間設置GridView Row的背景顏色

If (e.Row.RowType = DataControlRowType.DataRow) Then 
    Dim lblShowBreak As System.Web.UI.WebControls.Label = e.row.FindControl("lblShowBreak") 
    Dim lblIsBreak As System.Web.UI.WebControls.Label = e.row.FindControl("lblIsBreak") 

    If Trim(lblIsBreak.Text) = "Y" Then 
     e.Row.BackColor = System.Drawing.Color.Black 
    End If 
End If 
+0

爲什麼你需要爲每個內部RowDataBound事件,因爲它遍歷行...... – TechDo 2013-05-14 04:32:47

+0

是的,我不需要那個For循環,請我編輯的代碼。 – MusicLovingIndianGirl 2013-05-14 04:36:04

+0

回發後請調試並檢查'lblIsBreak'的值是否爲'Y''。 – TechDo 2013-05-14 04:40:28

回答

0

我已解決這個..我的修復如下。

If Trim(lblIsBreak.Text) = "Y" Then 
    lblShowBreak.Visible = True 
    For i = 0 To gvTimeTable.Columns.Count - 1 
     e.Row.Cells(i).BackColor = System.Drawing.Color.LightGray 
    Next 
End If 
0

我想,每次都可以標記e.Row.BackColor = System.Drawing.Color.Black中的OnPreRender方法。在這種情況下,狀態將永遠保存。

+0

它不起作用。 – MusicLovingIndianGirl 2013-05-14 04:51:42

+0

我想,你應該檢查網格控件和頁面的視圖狀態值。 – 2013-05-14 05:53:57

0

你必須使用RowDataBound事件的Grid View

Protected Sub GridView_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView.RowDataBound 
If e.Row.RowType = DataControlRowType.DataRow Then 
    If `set your condition here` Then 
    e.Row.BackColor = System.Drawing.Color.Black 
End If 
    End If 
End Sub 

你必須使用類似的東西。

希望你理解併爲你工作。

+0

你得到'lblShowBreak'標籤的值,但是如果你使用'lblIsBreak'條件,plz還提到你如何找到'lblIsBreak'標籤的值。 – Rahul 2013-05-14 04:47:43