GridView 웹 서버 컨트롤의 페이징
업데이트: 2007년 11월
ASP.NET GridView 컨트롤에서는 기본 페이징 동작을 지원하는 페이징 기능을 기본적으로 제공합니다. 기본 페이징 UI(사용자 인터페이스)를 사용하거나 사용자 지정 페이징 인터페이스를 만들 수 있습니다.
GridView 컨트롤의 페이징 동작
GridView 컨트롤에서는 데이터 소스의 항목에 대한 페이징을 지원합니다. 페이징을 사용하려면 AllowPaging 속성을 true로 설정합니다. GridView 컨트롤에서는 다음 중 한 가지 방법으로 페이징을 지원합니다.
요청 시 단일 데이터 페이지를 반환할 수 있는 데이터 소스 컨트롤에 GridView 컨트롤이 바인딩되어 있는 경우 GridView 컨트롤에서는 해당 기능을 직접 사용합니다. 요청되는 행 수는 PageSize 속성에 지정된 페이지당 행 수와 데이터 소스가 총 행 수를 확인할 수 있도록 지원하는지 여부에 따라 다를 수 있습니다.
참고: .NET Framework에 포함된 데이터 소스 컨트롤 중 단일 데이터 페이지를 반환할 수 있도록 지원하는 컨트롤은 ObjectDataSource뿐입니다.
참고: ObjectDataSource 컨트롤에 대한 소스 개체에서 SelectCountMethod 메서드를 구현하는 경우와 같이 데이터 소스를 만드는 경우에는 데이터의 페이지를 제공할 때 데이터 소스에서 총 행 수를 반환하는 것이 좋습니다. 이렇게 하면 데이터의 페이지를 검색하기 위해 GridView 컨트롤에서 요청해야 하는 레코드 수를 최소화할 수 있습니다. 소스 데이터 개체에서 총 행 수를 제공하는 경우 GridView 컨트롤은 한 번에 한 페이지의 행만 요청합니다. 총 행 수가 제공되지 않으면 GridView 컨트롤에서 요청된 데이터 페이지를 나타내는 행부터 시작하여 데이터 소스의 모든 행을 요청하고 표시되는 행을 제외한 모든 행을 삭제해야 합니다.
GridView 컨트롤이 페이징 기능을 직접 지원하지 않는 데이터 소스 컨트롤에 바인딩되거나 GridView 컨트롤이 코드에서 DataSource 속성을 통해 데이터 구조에 바인딩된 경우, GridView 컨트롤에서는 소스에서 모든 데이터 레코드를 가져온 다음 현재 페이지의 레코드만 표시하고 나머지는 삭제하는 방법으로 페이징을 수행합니다. 이 방법은 GridView 컨트롤의 데이터 소스가 ICollection 인터페이스를 구현하는 컬렉션(데이터 집합 포함)을 반환하는 경우에만 사용할 수 있습니다.
참고: 데이터 소스가 페이징을 직접 지원하지 않고 ICollection 인터페이스를 구현하지 않는 경우에는 GridView 컨트롤이 페이징을 수행할 수 없습니다. 예를 들어, SqlDataSource 컨트롤을 사용하고 이 컨트롤의 DataSourceMode 속성을 DataReader로 설정한 경우 GridView 컨트롤은 페이징을 구현할 수 없습니다.
페이징 설정 및 사용자 인터페이스 사용자 지정
여러 가지 방법으로 GridView 컨트롤의 페이징 사용자 인터페이스를 사용자 지정할 수 있습니다. PageSize 속성을 사용하여 페이지의 크기(한 번에 표시할 항목 수)를 설정할 수 있습니다. PageIndex 속성을 설정하여 GridView 컨트롤의 현재 페이지를 설정할 수도 있습니다. PagerSettings 속성을 사용하거나 페이저 템플릿을 제공하여 더 많은 사용자 지정 동작을 지정할 수 있습니다.
페이징 모드
AllowPaging 속성을 true로 설정한 경우 PagerSettings 속성을 사용하여 GridView 컨트롤이 자동 생성한 페이징 UI(사용자 인터페이스)의 모양을 사용자 지정할 수 있습니다. GridView 컨트롤은 사용자가 앞으로 또는 뒤로 이동하는 데 사용할 수 있는 방향 컨트롤과 특정 페이지로 이동하는 데 사용할 수 있는 숫자 컨트롤을 표시할 수 있습니다.
GridView 컨트롤의 PagerSettings 속성은 PagerSettings 클래스로 설정되어 있습니다. GridView 컨트롤의 Mode 속성을 설정하여 페이징 모드를 사용자 지정할 수 있습니다. 예를 들면, 다음과 같이 설정하여 페이징 UI 모드를 사용자 지정할 수 있습니다.
GridView1.PagerSettings.Mode = PagerButtons.NextPreviousFirstLast
다음과 같은 모드를 사용할 수 있습니다.
페이저 컨트롤 모양
GridView 컨트롤에는 여러 가지 페이저 모드에 대한 텍스트와 이미지를 사용자 지정하는 데 사용할 수 있는 다양한 속성이 있습니다. 예를 들어, 방향 단추를 사용한 이동을 허용하되 표시되는 텍스트는 사용자 지정하려면 다음 예제처럼 NextPageText 및 PreviousPageText 속성을 설정하여 단추 텍스트를 사용자 지정합니다.
GridView1.PagerSettings.NextPageText = "Click for next page"
GridView1.PagerSettings.PreviousPageText = "Click for previous page"
이미지를 사용하여 페이징 컨트롤의 모양을 사용자 지정할 수도 있습니다. PagerSettings 클래스에는 첫 번째, 마지막, 이전 및 다음 페이지 명령 단추에 대한 이미지 URL 속성이 포함되어 있습니다.
마지막으로, GridView 컨트롤의 PagerStyle 속성을 TableItemStyle 값으로 설정하여 페이징 명령의 모양을 조정할 수 있습니다.
데이터 페이징 템플릿
GridView 컨트롤의 AllowPaging 속성을 true로 설정하면 GridView 컨트롤에서 페이징을 위한 UI(사용자 인터페이스) 컨트롤을 자동으로 추가합니다. PagerTemplate 템플릿을 추가하여 페이징을 위한 UI를 사용자 지정할 수 있습니다. 수행할 페이징 작업을 지정하려면 CommandName 속성이 Page로 설정되고 CommandArgument 속성이 다음 값 중 하나로 설정된 Button 컨트롤을 포함합니다.
First 첫 번째 페이지로 이동하려는 경우
Last 마지막 페이지로 이동하려는 경우
Prev 이전 페이지로 이동하려는 경우
Next 데이터의 다음 페이지로 이동하려는 경우
숫자 특정 페이지로 이동하려는 경우
페이징 이벤트
데이터의 새 페이지로 이동하면 GridView 컨트롤에서 두 개의 이벤트를 발생시킵니다. PageIndexChanging 이벤트는 GridView 컨트롤이 페이징 작업을 수행하기 전에 발생합니다. PageIndexChanged 이벤트는 새 데이터 페이지가 GridView 컨트롤에 반환된 후에 발생합니다.
필요한 경우 PageIndexChanging 이벤트를 사용하여 페이징 작업을 취소하거나 GridView 컨트롤에서 새 데이터 페이지를 요청하기 전에 작업을 수행할 수 있습니다. PageIndexChanged 이벤트를 사용하면 사용자가 다른 데이터 페이지로 이동한 후에 작업을 수행할 수 있습니다.