【问题标题】:How do you change the background color of a row based on a value when databinding to a GridView?当数据绑定到 GridView 时,如何根据值更改行的背景颜色?
【发布时间】:2009-03-05 05:34:25
【问题描述】:

当数据绑定到 ASP .NET GridView 时,如何根据绑定 GridView 的数据表中的一列的布尔值更改背景颜色?

例如,如果您绑定到具有两列的表:名称、LikesBurritos。如果他们喜欢墨西哥卷饼,你想让人们的名字标签是蓝色的,如果他们不喜欢,你希望他们的名字标签是白色的。

遍历数据表或对象列表违背了数据绑定的目的......并且有很多地方我们使用数据绑定来表达在遍历集合时不编码每一列的添加。我很好奇你是否可以通过在标记中使用表达式来声明地做到这一点......

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    使用 GridView 中内置的 RowDataBound 事件,然后您可以执行以下操作(在 VB.NET 中):

    Private Sub FormatGridView(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) _
            Handles gvBurritoPeople.RowDataBound
    
      Dim drBurritoPeople As BurritoPeopleRow
    
      If e.Row.RowType = DataControlRowType.DataRow Then
    
         drBurritoPeople = DirectCast(DirectCast(e.Row.DataItem, System.Data.DataRowView).Row, BurritoPeopleRow)
    
         If drBurritoPeople.LikesBurritos Then
            e.Row.CssClass = "BlueRow"
         Else
            e.Row.CssClass = "WhiteRow"
         End If         
    
      End IF
    
    End Sub
    

    我不太确定您不想遍历所有数据的含义是什么,但是白色或蓝色行的这种呈现是在数据写入页面的同时发生的,所以您'在这里不会失去任何性能。

    编辑:我想一种可能的替代方法是在 ResultSet 中创建第三列,其中包含一个 CssClass 名称,您可以根据 LikesBurritos 列声明该名称,并且可以将 CssClass 绑定到 GridView 中的该名称,但是这将要求您有权访问 SQL 语句或拦截您的 DataBinding 进程以修改 ResultSet。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-04
      • 1970-01-01
      • 2015-08-22
      • 2015-07-17
      • 1970-01-01
      • 2011-02-02
      • 2014-09-10
      相关资源
      最近更新 更多