다음을 통해 공유


GridView 웹 서버 컨트롤의 데이터 정렬

업데이트: 2007년 11월

GridView 컨트롤에서는 정렬 기능을 기본적으로 제공하므로 코딩이 필요하지 않습니다. 열에 사용자 지정 SortExpression 속성 값을 사용하고 SortingSorted 이벤트를 사용하여 GridView 컨트롤의 정렬 기능을 더 세부적으로 사용자 지정할 수 있습니다.

GridView 컨트롤의 정렬 동작

GridView 컨트롤에서는 자체적으로 열을 정렬하지 않고 대신 데이터 소스 컨트롤에 의존하여 열을 정렬합니다. 이 컨트롤에서는 표의 각 열 맨 위에 표시되는 LinkButton 컨트롤과 같이 정렬을 위한 UI(사용자 인터페이스)를 제공합니다. 그러나 GridView 컨트롤은 바인딩할 데이터 소스 컨트롤의 데이터 정렬 기능에 의존합니다.

바인딩된 데이터 소스 컨트롤이 데이터를 정렬할 수 있으면 GridView 컨트롤은 데이터 소스 컨트롤과 상호 작용할 수 있으며 데이터가 선택될 때 데이터 소스에 SortExpression을 전달하여 정렬된 데이터를 요청할 수 있습니다. XmlDataSource 컨트롤과 같은 일부 데이터 소스 컨트롤은 정렬을 지원하지 않습니다. 그러나 데이터 소스 컨트롤이 정렬을 지원하면 GridView에서 이 기능을 이용할 수 있습니다. 다음 목록에서는 데이터 소스 컨트롤과 정렬을 지원하는 데 필요한 구성을 설명합니다.

GridView 정렬 과정

GridView 컨트롤의 AllowSorting 속성을 true로 설정하여 해당 컨트롤의 기본 정렬 동작을 사용할 수 있도록 지정할 수 있습니다. 이 속성을 true로 설정하면 GridView 컨트롤이 열 머리글에 LinkButton 컨트롤을 렌더링합니다. 또한 각 열의 SortExpression 속성을 바인딩된 데이터 필드의 이름으로 암시적으로 설정합니다. 예를 들어, 표의 열 중 하나가 Northwind 샘플 데이터베이스에 있는 Employees 테이블의 City 열을 표시하는 경우 해당 열의 SortExpression 속성은 City로 설정됩니다.

런타임에 사용자는 열 머리글의 LinkButton 컨트롤을 클릭하여 해당 열을 기준으로 정렬할 수 있습니다. 링크를 클릭하면 페이지가 포스트백을 수행하고 GridView 컨트롤의 Sorting 이벤트가 발생합니다. 그리고 정렬 식(기본적으로 데이터 열의 이름)이 이벤트 인수의 일부로 전달됩니다. Sorting 이벤트에 대한 기본 동작은 GridView 컨트롤에서 데이터 소스 컨트롤에 정렬 식을 전달하는 것입니다. 데이터 소스 컨트롤에서는 표에서 전달한 정렬 매개 변수를 사용하여 선택 쿼리나 메서드를 실행합니다.

쿼리가 실행된 후에는 표의 Sorted 이벤트가 발생합니다. 이 이벤트를 통해 상태 메시지 표시와 같은 쿼리 후 논리를 수행할 수 있습니다. 마지막으로, 데이터 소스 컨트롤에서는 GridView 컨트롤을 다시 정렬된 쿼리의 결과에 다시 바인딩합니다.

GridView 컨트롤에서는 데이터 소스 컨트롤이 정렬을 지원하는지 여부를 확인하지 않고 항상 정렬 식을 데이터 소스에 전달합니다. 데이터 소스 컨트롤이 정렬을 지원하지 않는 경우 GridView 컨트롤에서 정렬 작업이 수행되면 GridView 컨트롤이 NotSupportedException 예외를 throw합니다. Sorting 이벤트에 대한 처리기에서 이 예외를 catch하고, 데이터 소스에서 정렬을 지원하는지 또는 사용자 고유의 정렬 논리를 사용해야 하는지 확인할 수 있습니다.

개별 열에 대한 정렬 제어

표의 AllowSorting 속성을 설정하면 기본적으로 열을 정렬할 수 있습니다. 개별 열의 SortExpression 속성을 빈 문자열("")로 설정하면 BoundField 또는 TemplateField 필드와 같은 개별 필드를 정렬할 수 없게 됩니다.

사용자 지정 정렬

기본 정렬 동작이 적합하지 않은 경우 표의 정렬 동작을 사용자 지정할 수 있습니다. 정렬을 사용자 지정하는 기본적인 방법은 Sorting 이벤트를 처리하는 것입니다. 처리기에서 다음을 수행할 수 있습니다.

  • 데이터 소스 컨트롤에 전달되는 정렬 식을 사용자 지정할 수 있습니다. 기본적으로 정렬 식은 하나의 열 이름입니다. 이벤트 처리기에서 정렬 식을 수정할 수 있습니다. 예를 들어, 두 개의 열을 기준으로 정렬하려면 두 열이 모두 포함된 정렬 식을 만든 다음 수정한 정렬 식을 데이터 소스 컨트롤에 전달하면 됩니다. 자세한 내용은 GridViewSortEventArgs.SortExpression 속성을 참조하십시오.

  • 사용자 고유의 정렬 논리를 만들 수 있습니다. 예를 들어, 정렬을 지원하지 않는 데이터 소스를 사용하는 경우 직접 만든 코드로 정렬을 수행한 다음 표를 정렬된 데이터에 바인딩할 수 있습니다.

참고 항목

개념

ASP.NET 데이터 바인딩 웹 서버 컨트롤 개요