Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 当数据绑定到GridView时,如何基于值更改行的背景色?_Asp.net - Fatal编程技术网

Asp.net 当数据绑定到GridView时,如何基于值更改行的背景色?

Asp.net 当数据绑定到GridView时,如何基于值更改行的背景色?,asp.net,Asp.net,当数据绑定到ASP.NET GridView时,如何根据绑定GridView的数据表中的一列布尔值更改背景颜色 例如,如果您绑定到一个包含两列的表:Name,LikesBurritos。如果人们喜欢墨西哥玉米煎饼,你想让他们的名字标签是蓝色的,如果他们不喜欢,你想让他们的名字标签是白色的 遍历数据表或对象列表会破坏数据绑定的目的。。。有很多地方我们使用数据绑定来表达这样一个观点,即在遍历集合时不编码每一列的加法。我很好奇,如果您可以通过在标记中使用表达式来进行去极化…使用内置在GridView中

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

例如,如果您绑定到一个包含两列的表:Name,LikesBurritos。如果人们喜欢墨西哥玉米煎饼,你想让他们的名字标签是蓝色的,如果他们不喜欢,你想让他们的名字标签是白色的


遍历数据表或对象列表会破坏数据绑定的目的。。。有很多地方我们使用数据绑定来表达这样一个观点,即在遍历集合时不编码每一列的加法。我很好奇,如果您可以通过在标记中使用表达式来进行去极化…

使用内置在GridView中的RowDataBound事件,那么您可以这样做(在VB.NET中):

我不太确定您不想遍历所有数据的含义,但是白色或蓝色行的呈现是在数据写入页面的同时发生的,因此您不会损失任何性能


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

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

我不太确定您不想遍历所有数据的含义,但是白色或蓝色行的呈现是在数据写入页面的同时发生的,因此您不会损失任何性能

编辑:我想一个可能的替代方法是在结果集中创建第三列,其中包含一个CssClass名称,您可以根据LikesBurritos列声明该名称,并且可以将CssClass绑定到GridView中的名称,但这需要您访问SQL语句,或者截取数据绑定过程来修改即将出现的结果集

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