.NET Framework 애플리케이션의 데이터에 Windows Forms 컨트롤 바인딩

참고 항목

데이터 집합 및 관련 클래스는 2000년대 초반에 적용된 레거시 .NET Framework 기술로, 응용 프로그램이 데이터베이스에서 연결이 끊어진 동안 응용 프로그램이 메모리의 데이터로 작업할 수 있도록 합니다. 사용자가 데이터를 수정하고 변경 내용을 다시 데이터베이스에 유지할 수 있도록 하는 애플리케이션에 특히 유용합니다. 데이터 세트는 매우 성공적인 기술로 입증되었지만 새 .NET 애플리케이션은 Entity Framework Core를 사용하는 것이 좋습니다. Entity Framework는 표 형식 데이터를 개체 모델로 사용하는 더 자연스러운 방법을 제공하며 더 단순한 프로그래밍 인터페이스를 제공합니다.

데이터를 Windows Forms에 바인딩하여 애플리케이션 사용자에게 데이터를 표시할 수 있습니다. 이러한 데이터 바인딩된 컨트롤을 만들려면 데이터 원본 창에서 Visual Studio의 Windows Forms 디자이너로 항목을 끌어옵니다.

Data Source drag operation

데이터 원본 창이 표시되지 않는 경우 보기>다른 창>데이터 원본을 선택하거나 Shift+Alt+D를 눌러 열 수 있습니다. 데이터 원본 창을 보려면 Visual Studio에서 프로젝트가 열려 있어야 합니다.

항목을 끌기 전에 바인딩할 컨트롤의 형식을 설정할 수 있습니다. 테이블 자체를 선택하는지 아니면 개별 열을 선택하는지에 따라 다른 값이 표시됩니다. 사용자 지정 값을 설정할 수도 있습니다. 테이블의 경우 세부 정보는 각 열이 별도의 컨트롤에 바인딩되어 있음을 의미합니다.

Bind data source to DataGridView

BindingSource 및 BindingNavigator 컨트롤

BindingSource 구성 요소는 두가지 용도로 사용됩니다. 첫째, 컨트롤을 데이터에 바인딩할 때 추상화 계층을 제공합니다. 양식의 컨트롤은 데이터 원본에 직접이 아니라 BindingSource 구성 요소에 바인딩됩니다. 둘째, 개체의 컬렉션을 관리할 수 있습니다. BindingSource에 형식을 추가하면 해당 형식의 목록이 만들어집니다.

BindingSource 구성 요소에 대한 자세한 내용은 다음을 참조하세요.

BindingNavigator 컨트롤은 Windows 애플리케이션에 표시되는 데이터를 탐색하기 위한 사용자 인터페이스를 제공합니다.

DataGridView 컨트롤에서 데이터에 바인딩

DataGridView 컨트롤의 경우 전체 테이블이 단일 컨트롤에 바인딩됩니다. DataGridView를 양식으로 끌면 레코드 탐색을 위한 도구 스트립(BindingNavigator)도 표시됩니다. DataSet, TableAdapter, BindingSourceBindingNavigator가 구성 요소 트레이에 표시됩니다. 다음 그림에서는 Customers 테이블에 Orders 테이블과의 관계가 있으므로 TableAdapterManager도 추가되었습니다. 이러한 변수는 모두 자동 생성 코드에서 양식 클래스의 프라이빗 멤버로 선언됩니다. DataGridView를 채우기 위한 자동 생성 코드는 Form_Load 이벤트 처리기에 있습니다. 데이터베이스를 업데이트하기 위해 데이터를 저장하는 코드는 BindingNavigator에 대한 Save 이벤트 처리기에 있습니다. 필요에 따라 이 코드를 이동하거나 수정할 수 있습니다.

GridView with BindingNavigator

각각의 오른쪽 위 모서리에 있는 스마트 태그를 클릭하여 DataGridViewBindingNavigator의 동작을 사용자 지정할 수 있습니다.

DataGridView and Binding Navigator smart tags

데이터 원본 창에서 애플리케이션에 필요한 컨트롤을 사용할 수 없는 경우 컨트롤을 추가할 수 있습니다. 자세한 내용은 데이터 소스 창에 사용자 지정 컨트롤 추가를 참조하세요.

데이터 원본 창에서 양식에 이미 있는 컨트롤로 항목을 끌어 컨트롤을 데이터에 바인딩할 수도 있습니다. 이미 데이터에 바인딩된 컨트롤은 데이터 바인딩이 가장 최근에 끌어온 항목으로 다시 설정됩니다. 유효한 놓기 대상이 되려면 컨트롤이 데이터 원본 창에서 끌어온 항목의 기본 데이터 형식을 표시할 수 있어야 합니다. 예를 들어 데이터 형식이 DateTime인 항목을 CheckBox로 끌 수 없습니다. CheckBox는 날짜를 표시할 수 없기 때문입니다.

개별 컨트롤에서 데이터에 바인딩

데이터 원본을 세부 정보에 바인딩하는 경우 데이터 세트의 각 열이 별도의 컨트롤에 바인딩됩니다.

Bind data source to details

Important

위의 그림에서는 Orders 테이블이 아니라 Customers 테이블의 Orders 속성에서 끌어옵니다. Customer.Orders 속성에 바인딩하면 DataGridView에서 만든 탐색 명령이 세부 정보 컨트롤에 즉시 반영됩니다. Orders 테이블에서 끌어오면 컨트롤이 데이터 세트에 계속 바인딩되지만 DataGridView와 동기화되지는 않습니다.

다음 그림에서는 Customers 테이블의 Orders 속성이 데이터 원본 창의 세부 정보에 바인딩된 후 양식에 추가되는 기본 데이터 바인딩된 컨트롤을 보여 줍니다.

Orders table bound to details

또한 각 컨트롤에는 스마트 태그가 있습니다. 이 태그를 사용하면 해당 컨트롤에만 적용되는 사용자 지정이 가능합니다.