문제

나는 CSS 클래스를 개별 행에 선택적으로 적용 할 수있는 방법을 찾고 있습니다. GridView 데이터 바인딩 항목의 속성을 기반으로합니다.

예 :

GridView의 데이터 소스는 일반적인 목록입니다 SummaryItems 그리고 SummaryItem 속성이 있습니다 ShouldHighlight. 언제 ShouldHighlight == true 관련 행의 CSS는 highlighted

어떤 아이디어?

도움이 되었습니까?

해결책

아주 쉽게

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        DataRowView drv = e.Row.DataItem as DataRowView;
        if (drv["ShouldHighlight"].ToString().ToLower() == "true")
            e.Row.CssClass = "highlighted";
    }
}

위의 코드는 a를 사용하는 경우 작동합니다 DataTable으로 데이터 소스로

로 변경:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        myClass drv = (myClass)e.Row.DataItem;
        if (drv.ShouldHighlight)
            e.Row.CssClass = "highlighted";
    }
}

제네릭을 사용할 때 위의 예제 :

public class myClass
{ 
    public Boolean ShouldHighlight
    { get; set; }
}

당신이 함께 일하는 경우 제네릭 (목록, 사전 등)

명심하십시오 :

e.Row.dataItem

항상 행을 채우고있는 전체 객체를 반환하므로 여기에서 웹 페이지에서 데이터의 모양을 조작하기가 쉽습니다.

데이터가 행 객체에 첨부 된 후 트리거되는 RowDatabound 이벤트를 사용해야하지만 아직 페이지에 HTML 코드를 작성하지 않은 경우,이 방법으로는 thinthighlight 값을 확인할 수 있습니다 (나는 문자열로 변환 했으므로 유형을 모릅니다. , 부울 가치라는 것을 알면 변경할 수 있습니다).

이 코드는 megakemp 코드보다 훨씬 빠르게 실행됩니다. 왜냐하면 목록 객체를 생성하지 않고 각 행의 전체 데이터 소스로 채워져 있습니다 ...

추신 a 이 웹 사이트를보십시오, GridView 객체를 사용하여 프로젝트에 대한 여러 자습서를 찾을 수 있습니다.

다른 팁

명심하고 싶은 한 가지는 RowCreated 또는 RowDatabound 이벤트 핸들러에서 row.cssclass 속성을 설정하는 것입니다. GridView는 다음과 같은 속성을 통해 행 스타일에 쉽게 액세스 할 수 있습니다.

gvGrid.AlternatingRowStyle.CssClass = ALTROW_CSSCLASS
gvGrid.RowStyle.CssClass = ROW_CSSCLASS

그러나 CSSCLASS 값을 특정 행에 할당 할 때이 경우에 필요한 것처럼 할당은 그리드 레벨에서 최상위 할당을 오버 트립합니다. 과제는 우리가 원하는대로 "캐스케이드"가 아닙니다. 따라서 최상위 클래스 할당을 보존하고 더 구체적으로 자신의 레이어를 보존하려면 Rowstate를 확인하려면 클래스 이름을 확인하고 그에 따라 클래스 이름을 확인해야합니다.

If(item.ShouldHighlight)
 {
    If(e.Row.RowState == DataControlRowState.Alternate)
    {
        e.Row.CssClass = String.Format("{0} {1}", "highlight", ALTROW_CSSCLASS)
    }
    else
    {
        e.Row.CssClass = String.Format("{0} {1}", "highlight", ROW_CSSCLASS)
    }


}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top