当数据绑定到ASP .NET GridView时,如何基于布尔值更改背景颜色,该布尔值是GridView绑定的数据表中的列?
例如,如果您绑定到具有两列的表:Name,LikesBurritos.如果他们喜欢墨西哥卷饼,你想要让人们的名字标记为蓝色,如果他们不喜欢墨西哥,你想要标记.
迭代数据表或对象列表会破坏数据绑定的目的......我们在很多地方使用数据绑定来表示在迭代整个集合时不编码每列的添加的表达点.我很好奇你是否可以通过在标记中使用expresion来做到这一点...
使用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中创建第三列,其中包含您可以根据LikesBurritos列声明的CssClass名称,您可以将CssClass绑定到GridView中的CssClass,但这样做要求您有权访问SQL语句或拦截您的DataBinding进程以修改结果集.