2008-09-08 4 views
2

예를 들어 미국 주 목록을 반복하고 각 주 이름 뒤에 도시 및 도시 인구 테이블을 표시해야하는 시나리오가 있습니다. 설계 요구 사항에 따라 모든 외부 반복은 도시 테이블이 따르는 주 이름이어야하며이 요구 사항은 현재 변경할 수 없습니다. Repeater 내의 GridView를 중첩하고 Repeater의 ItemDataBound 이벤트 중에 반복되는 각 GridView를 바인딩 할 때 단점이 있습니까? 대체 솔루션은 무엇입니까?Repeater 내의 GridView 중첩

답변

1

리피터에서 GridView를 중첩하는 것이 가장 좋은 해결책이었습니다. 그런 다음 Repeater의 ItemDataBound 이벤트 중 각 반복되는 GridView를 바인딩했습니다. 물론 ViewStates를 사용하지 않아도되므로 뷰 상태를 해제했습니다.

2

이 만약 그랬다면, 난이 질문을 반대 것 및 내가의 GridView를 사용해야하는 이유는 페이징 및 정렬과 같은 내장 기능의 무리를해야하는 경우, 요청, 다음의 GridView이 잘 맞는 수 있습니다. 표 형식의 데이터 만 원한다면 다시 생각해 보겠습니다. 왜? GridView를 사용하면 사용하지 않을 물건이 많이 생기므로 ViewState가 잠재적으로 커질 것이고 페이지 성능이 느려질 것입니다.

저는 GridView와 관련하여 몹시 괴롭지는 않지만 좋은 이유가있을 때만 사용합니다.

+0

GridView를 사용하지 않았다면 다른 Repeater를 사용하여

HTML을 만들거나 codebehind의 데이터 세트를 반복하여 출력을 리터럴에 침투하게합니까? –

+0

코드가 뒤에 있다면 문자열을 작성하고 리터럴에 덤핑하는 대신 (HtmlTableRow, HtmlTableCell) 컨트롤을 사용하여 테이블에 추가 할 것입니다. 또는 HtmlTextWriter를 사용하십시오. 필자는 코드 숨김으로 프레젠테이션을하고 싶지 않습니다. 그래서 나 였다면 Repeater 나 ListView를 사용할 것입니다. – CarmineSantini

1

위의 시나리오에서는 생성 된 모든 GridView 개체의 오버 헤드를 줄이는 마스터 세부 스타일 GridView를 사용하는 것이 좋습니다.

다양한 구현 (using a drop down for the master, modal popup for the detail 등 사용)이 있지만 주요 요점은 구현이 가능하다는 것입니다.

+0

아쉽게도 디자인 요구 사항에 따라 모든 외부 반복은 도시 이름이 뒤 따르는 도시 이름이어야합니다. 나는 그 점을 명확하게하기 위해 나의 글을 편집했다. –

1

최소한 GridView에서 ViewState를 해제하면됩니다.

관련 문제