2009-03-02 37 views
1

將數據綁定到ASP .NET GridView時,如何根據作爲GridView綁定的數據表中的列的布爾值更改背景顏色?如何在數據綁定到GridView時根據值更改一行的背景顏色?

例如,如果你綁定到一個有兩列的表:Name,LikesBurritos。如果他們喜歡墨西哥捲餅,你想要人名的標籤是藍色,如果他們不喜歡,也可以是白色。

對數據表或對象列表進行迭代失敗了數據綁定的目的......並且有很多地方我們使用數據綁定來表示迭代遍歷集合時不對每列的添加進行編碼的表達點。我很好奇,如果你可以通過declaritivly在標記使用爲一個函數做到這一點...

回答

5

使用內置在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進程以修改ResultSet。

相關問題