2015-11-05 73 views
0

我有一個GridView綁定到SQL數據庫中的表,以便它登錄到我的網站後加載到頁面上。ASP.NET GridView BackColor更新列排序

當第一次加載GridView的頁面時。我逐步瀏覽表格中的行,並根據其「狀態」列更改每行的BackColor(即,如果它是「不完整」,如果它是「完整」,則將其設爲紅色或綠色)。當您按另一列對錶格進行排序時,BackColor將消失。

我試圖運行相同的功能來逐行遍歷並更改GridView1_Sorted事件上的所有BackColors,但該表保持沒有任何顏色更改。使用GridView1_Load事件也一樣。然而,添加一個按鈕並將該按鈕的點擊與相同的格式代碼相結合,可以讓我在排序後應用BackColors

這告訴我,我可能會誤解Sorted事件的工作原理。任何人都可以告訴我如何正確設置GridView,這樣我可以按某個列排序並仍然重新應用我的BackColor格式?

+1

您可能需要掛接到RowDataBound事件。我已經完成了WebForms已經有一段時間了,但是如果數據源在排序時被彈回到網格,那麼每次綁定一行時都要嘗試調用該函數。 https://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.gridview.rowdatabound(v=vs.110).aspx – CptCoathanger

+0

工作很好。謝謝你的提示。我認爲Sorted是正確的事件,但我想我錯了。 – thewill2live

回答

1

嘗試是這樣的

If e.Row.RowType = DataControlRowType.DataRow Then 
    Dim stStatus As String = e.Row.Cells(1).Text ' INDEX OF YOUR STATUS COLUMN 
    For Each cell As TableCell In e.Row.Cells 
     If stStatus = "Incomplete" Then 
      cell.BackColor = Color.Red 
     Else If stStatus = "Complete" Then 
      cell.BackColor = Color.Green 
     End If 
    Next 
End If 

將這個代碼在RowDataBound事件您GridView

+0

工作就像一個魅力。這正是我需要的。謝謝。 – thewill2live