Windows Forms DataGridView 컨트롤의 데이터 디스플레이 모드Data Display Modes in the Windows Forms DataGridView Control

DataGridView 컨트롤은 바인딩, 바인딩 해제 및 가상의 세 가지 다른 모드로 데이터를 표시할 수 있습니다.The DataGridView control can display data in three distinct modes: bound, unbound, and virtual. 요구 사항에 따라 가장 적합 한 모드를 선택 합니다.Choose the most suitable mode based on your requirements.

바인딩 안 됨Unbound

바인딩되지 않은 모드는 프로그래밍 방식으로 관리 하는 상대적으로 적은 양의 데이터를 표시 하는 데 적합 합니다.Unbound mode is suitable for displaying relatively small amounts of data that you manage programmatically. DataGridView 컨트롤을 바인딩된 모드에서 데이터 원본에 직접 연결 하지 않습니다.You do not attach the DataGridView control directly to a data source as in bound mode. 대신, 일반적으로 DataGridViewRowCollection.Add 메서드를 사용 하 여 컨트롤을 직접 채워야 합니다.Instead, you must populate the control yourself, typically by using the DataGridViewRowCollection.Add method.

바인딩되지 않은 모드는 정적, 읽기 전용 데이터에 특히 유용 하거나 외부 데이터 저장소와 상호 작용 하는 사용자 고유의 코드를 제공 하려는 경우에 유용 합니다.Unbound mode can be particularly useful for static, read-only data, or when you want to provide your own code that interacts with an external data store. 그러나 사용자가 외부 데이터 소스와 상호 작용 하도록 하려는 경우 일반적으로 바인딩된 모드를 사용 합니다.When you want your users to interact with an external data source, however, you will typically use bound mode.

읽기 전용 바인딩되지 않은 DataGridView를 사용 하는 예제는 방법: 바인딩되지 않은 Windows Forms DataGridView 컨트롤 만들기를 참조 하세요.For an example that uses a read-only unbound DataGridView, see How to: Create an Unbound Windows Forms DataGridView Control.

BoundBound

바인딩된 모드는 데이터 저장소와의 자동 상호 작용을 사용 하 여 데이터를 관리 하는 데 적합 합니다.Bound mode is suitable for managing data using automatic interaction with the data store. DataSource 속성을 설정 하 여 DataGridView 컨트롤을 해당 데이터 소스에 직접 연결할 수 있습니다.You can attach the DataGridView control directly to its data source by setting the DataSource property. 컨트롤이 데이터 바인딩될 때 데이터 행은 사용자가 명시적으로 관리할 필요 없이 푸시되 고 끌어옵니다.When the control is data bound, data rows are pushed and pulled without the need of explicit management on your part. AutoGenerateColumns 속성이 true되 면 데이터 원본의 각 열에 해당 하는 열이 컨트롤에 생성 됩니다.When the AutoGenerateColumns property is true, each column in your data source will cause a corresponding column to be created in the control. 고유한 열을 만들려면이 속성을 false 설정 하 고 DataPropertyName 속성을 사용 하 여 각 열을 구성할 때 바인딩합니다.If you prefer to create your own columns, you can set this property to false and use the DataPropertyName property to bind each column when you configure it. 이는 기본적으로 생성 되는 형식 이외의 열 형식을 사용 하려는 경우에 유용 합니다.This is useful when you want to use a column type other than the types that are generated by default. 자세한 내용은 Windows Forms DataGridView 컨트롤의 열 형식을 참조 하세요.For more information, see Column Types in the Windows Forms DataGridView Control.

바인딩된 DataGridView 컨트롤을 사용 하는 예제는 연습: Windows Forms DataGridView 컨트롤의 데이터 유효성 검사를 참조 하세요.For an example that uses a bound DataGridView control, see Walkthrough: Validating Data in the Windows Forms DataGridView Control.

바인딩되지 않은 열을 바인딩 모드의 DataGridView 컨트롤에 추가할 수도 있습니다.You can also add unbound columns to a DataGridView control in bound mode. 사용자가 특정 행에 대 한 작업을 수행할 수 있도록 하는 단추 또는 링크의 열을 표시 하려는 경우에 유용 합니다.This is useful when you want to display a column of buttons or links that enable users to perform actions on specific rows. 바인딩된 열에서 계산 된 값이 있는 열을 표시 하는 데도 유용 합니다.It is also useful to display columns with values calculated from bound columns. CellFormatting 이벤트에 대 한 처리기에서 계산 된 열에 대 한 셀 값을 채울 수 있습니다.You can populate the cell values for calculated columns in a handler for the CellFormatting event. 그러나 DataSet 또는 DataTable를 데이터 원본으로 사용 하는 경우에는 DataColumn.Expression 속성을 사용 하 여 계산 열을 대신 만들 수 있습니다.If you are using a DataSet or DataTable as the data source, however, you might want to use the DataColumn.Expression property to create a calculated column instead. 이 경우 DataGridView 컨트롤은 데이터 원본의 다른 열과 마찬가지로 계산 된 열을 처리 합니다.In this case, the DataGridView control will treat calculated column just like any other column in the data source.

바인딩된 모드로 바인딩되지 않은 열을 기준으로 정렬 하는 것은 지원 되지 않습니다.Sorting by unbound columns in bound mode is not supported. 사용자가 편집 가능한 값을 포함 하는 바인딩 모드에서 바인딩되지 않은 열을 만드는 경우 바인딩된 열을 기준으로 컨트롤을 정렬할 때 이러한 값을 유지 하려면 가상 모드를 구현 해야 합니다.If you create an unbound column in bound mode that contains user-editable values, you must implement virtual mode to maintain these values when the control is sorted by a bound column.

가상Virtual

가상 모드를 사용 하 여 고유한 데이터 관리 작업을 구현할 수 있습니다.With virtual mode, you can implement your own data management operations. 바인딩된 열을 기준으로 컨트롤을 정렬 하는 경우 바인딩 모드에서 바인딩되지 않은 열의 값을 유지 하는 데 필요 합니다.This is necessary to maintain the values of unbound columns in bound mode when the control is sorted by bound columns. 그러나 가상 모드를 주로 사용 하는 것은 많은 양의 데이터와 상호 작용할 때 성능을 최적화 하는 것입니다.The primary use of virtual mode, however, is to optimize performance when interacting with large amounts of data.

관리 하는 캐시에 DataGridView 컨트롤을 연결 하 고, 데이터 행을 푸시한 후 끌어올 때 코드를 제어 합니다.You attach the DataGridView control to a cache that you manage, and your code controls when data rows are pushed and pulled. 메모리 사용 공간을 작게 유지 하기 위해 캐시는 현재 표시 되는 행 수와 크기가 비슷해야 합니다.To keep the memory footprint small, the cache should be similar in size to the number of rows currently displayed. 사용자가 새 행을 뷰로 스크롤하면 코드가 캐시에서 새 데이터를 요청 하 고 필요에 따라 메모리에서 이전 데이터를 플러시합니다.When the user scrolls new rows into view, your code requests new data from the cache and optionally flushes old data from memory.

가상 모드를 구현할 때 새 행의 추가를 롤백하는 경우와 데이터 모델에 새 행이 필요한 시기를 추적 해야 합니다.When you are implementing virtual mode, you will need to track when a new row is needed in the data model and when to rollback the addition of the new row. 이 기능의 정확한 구현은 데이터 모델의 구현 및 데이터 모델의 트랜잭션 의미 체계에 따라 달라 집니다. 커밋 범위가 셀 또는 행 수준에 있는지 여부입니다.The exact implementation of this functionality will depend on the implementation of the data model and the transaction semantics of the data model; whether commit scope is at the cell or row level.

가상 모드에 대 한 자세한 내용은 Windows Forms DataGridView 컨트롤의 가상 모드를 참조 하세요.For more information about virtual mode, see Virtual Mode in the Windows Forms DataGridView Control. 가상 모드 이벤트를 사용 하는 방법을 보여 주는 예제는 연습: Windows Forms DataGridView 컨트롤에서 가상 모드 구현을 참조 하세요.For an example that shows how to use virtual mode events, see Walkthrough: Implementing Virtual Mode in the Windows Forms DataGridView Control.

참고 항목See also