2012-06-26 4 views
1

피벗 테이블을 생성하는 SQL에서 저장 프로 시저를 만들었습니다. 나는이 데이터를 표시하기 위해 ASP.NET에서 GridView를 성공적으로 만들었습니다.형식 GridView의 동적으로 생성 된 열 머리글

그러나 일부 열 머리글은 데이터 (AutoGenerateColumns = True)에서 동적으로 생성되며 이러한 열 머리글은 날짜 일 뿐이므로 표가 생성 될 때마다 거의 다르게 보입니다.

이 모든 것은 열 머리글의 날짜 형식이 틀린 것을 제외하고는 모두 잘 작동합니다. 나는 SQL이 산출물에서 날짜를 산출하는 방식을 바꿀 수 있다는 것을 알고있다. 그러나 나는 그런 식으로하고 싶지 않다. 웹 페이지에서 제어하려고합니다.

나는 이것이 어려울 것이라고 생각하지 않았습니다. 헤더 행에서 셀을 찾고 datastringformat을 변경하는 줄을 따라 할 수 있다고 생각했습니다. 문제는 GridView의 DataBound 또는 RowDataBound 이벤트에 코드를 넣을 때 헤더 행의 셀이 비어있는 것처럼 보이므로 다시 포맷 할 수 없다는 것입니다. 마치 DataBound 이벤트 이후에 헤더가 채워지는 것처럼 보이지만, 언제 또는 어떻게 트래핑해야하는지 알지 못합니다.

아무도 도와 줄 수 있습니까?

답변

0

"RowCreated"이벤트 중에 열 머리글을 지정할 수 있습니다.

Private Sub GridView1_RowCreated(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowCreated 
    e.Row.Cells(0).Text = Format(Convert.ToDateTime(e.Row.Cells(0).Text), "yyyy-MM-dd") 
    e.Row.Cells(1).Text = Format(Convert.ToDateTime(e.Row.Cells(1).Text), "yyyy-MM-dd") 
End Sub 

내가 동적/자동 생성 된 열이있는의 GridView에 대해이 테스트 작동하는 것 같다 방법은 다음과 같습니다. 열의 인덱스는 0입니다. 또한 헤더 셀의 텍스트를 설정하기 위해 행 번호를 지정할 필요가 없습니다.

+0

이 제안을 시도했습니다 (감사합니다!). 페이지를로드 할 때 "문자열이 유효한 DateTime으로 인식되지 않았습니다."라는 오류가 나타납니다. GridView의 라이프 사이클의 시점에서 아직 헤더가 채워지지 않았기 때문에 다시 생각합니다. 또한 간단히 [code] e.row.cells (4) .Text = "Test"[/ code]를 RowCreated 이벤트에 입력하면 "지정된 인수가 유효한 값 범위를 벗어났습니다. 매개 변수 이름 : 색인 ". 내 GridView에는 11 개의 열이 있습니다. 그것은 인덱스가 0에서만 작동합니다. 아직 생성되지 않은 컬럼에 대한 힌트가 있는지는 잘 모르겠습니다 ... –

+0

이 코드를 조사해 볼 수있는 코드를 추가 할 수 있습니까? – Zishan

관련 문제