2015-11-05 70 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