2009-03-02 1 views
1

ASP .NET GridView에 데이터 바인딩 할 때 GridView가 바인딩되는 데이터 테이블의 열인 부울 값을 기반으로 백그라운드 색을 변경하는 방법은 무엇입니까?GridView에 데이터 바인딩 할 때 값을 기반으로 행의 배경색을 어떻게 변경합니까?

예를 들어 Name, LikesBurritos라는 두 개의 열이있는 테이블에 바인딩 된 경우. 그리고 사람들이 부리 토를 원한다면 사람들 이름의 레이블을 파란색으로, 그렇지 않은 경우에는 흰색으로 레이블을 지정하고 싶습니다.

데이터 테이블이나 개체 목록을 반복하면 데이터 바인딩의 목적을 무효화합니다 ... 그리고 집합을 반복하는 동안 모든 열의 추가를 코딩하지 않는 빠른 포인트에 데이터 바인딩을 사용하는 장소가 많이 있습니다. 당신이 declaritivly 마크 업에 expresion를 사용하여이 작업을 수행 할 수 있을지, 다음 (VB.NET에서) 같은 것을 할 수의 GridView에 내장 된 RowDataBound 이벤트를 사용 ...

답변

5

궁금 :

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 

모든 데이터를 반복하지 않으려 고하는 것이 무엇인지 모르겠지만 흰색 또는 파란색 행의 렌더링은 데이터가 페이지에 기록되는 것과 동시에 발생하므로 사용자가 여기서 어떤 성과도 잃지 않습니다.

EDIT : LikesBurritos 열을 기반으로 선언 할 수있는 CssClass 이름을 포함하는 ResultSet의 세 번째 열을 만들고이 CssClass를 GridView에 바인딩 할 수있는 가능성이 있습니다. 그러나 이것은 SQL 문에 액세스하거나 DataBinding 프로세스를 가로 채어 ResultSet을 수정하도록 요구할 것입니다.

관련 문제