매우 쉽게
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";
}
}
당신이 데이터 소스로
의 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
항상 당신이 행을 채우기하는 전체 개체를 반환, 쉽게 그래서 여기에서 웹 페이지의 데이터 모양을 조작합니다.
데이터가 행 개체에 연결되었지만 페이지에 아직 HTML 코드가 기록되지 않은 후에 트리거하는 RowDataBound 이벤트를 사용해야합니다. 이렇게하면 ShouldHighlight 값을 확인할 수 있습니다 (내가 문자열 원인으로 변환 됨). 유형을 모르는 경우 부울 값인 경우 변경할 수 있습니다.
이 코드는 훨씬 더 빨리 당신이 목록 객체를 생성하고 각 행의 전체 데이터 소스로 채워하지 않는 원인 megakemp의 코드보다 실행
...
P.S. 당신은 RowCreated 또는 RowDataBound 이벤트 핸들러에서 Row.CssClass 속성을 설정하면 모든 기본 스타일을 재정의 할 것이라는의 GridView 객체에게 당신이 염두에 두어야 할
고마워요!나는 그 생각을 주었지만, html이 이미 생성되었다고 가정 할 때이를 무시했다. (실제로 시도해야한다고 가정) –
dataGridView에서 수정 사항을 아카이브하는 것이 가장 좋은 방법이다. 언제나 이미 (ItemTemplate에 Label1이있는 경우) (레이블) e.Row.FindControl ("Label1")을 사용하여 템플릿에 개체를 배치합니다. 텍스트 = dvr.myPropertyText; – balexandre
그것은 나를 위해 작동하지 않습니다 = | 디버깅하는 동안 그 클래스가 할당되어 있지만 렌더링 된 HTML에 존재하지 않는 것을 볼 수 있습니다 – AlfeG