비고
클래스 및 관련 클래스는 DataSet 2000년대 초반의 레거시 .NET Framework 기술로, 애플리케이션이 데이터베이스와 연결이 끊긴 동안 애플리케이션이 메모리의 데이터로 작업할 수 있도록 합니다. 이 기술은 사용자가 데이터를 수정하고 변경 내용을 데이터베이스에 다시 유지할 수 있도록 하는 앱에 특히 유용합니다. 데이터 세트는 입증된 성공적인 기술이지만 새 .NET 애플리케이션에 권장되는 방법은 Entity Framework Core를 사용하는 것입니다. Entity Framework는 테이블 형식 데이터를 개체 모델로 사용하는 보다 자연스러운 방법을 제공하며 더 간단한 프로그래밍 인터페이스를 제공합니다.
Windows Forms에 데이터를 바인딩하여 애플리케이션 사용자에게 데이터를 표시할 수 있습니다. 이러한 데이터 바인딩된 컨트롤을 만들려면 데이터 원본 창에서 Visual Studio의 Windows Forms 디자이너로 항목을 끌어옵니다.
팁 (조언)
데이터 원본 창이 표시되지 않으면다른 Windows>데이터 원본보기를> 선택하거나 Shift+Alt+D를 눌러 열 수 있습니다. 데이터 원본 창을 보려면 Visual Studio에서 프로젝트를 열어야 합니다.
항목을 끌기 전에 바인딩할 컨트롤의 유형을 설정할 수 있습니다. 테이블 자체를 선택하는지 또는 개별 열을 선택했는지에 따라 다른 값이 표시됩니다. 사용자 지정 값을 설정할 수도 있습니다. 테이블의 경우 Details 는 각 열이 별도의 컨트롤에 바인딩되어 있음을 의미합니다.
BindingSource 및 BindingNavigator 컨트롤
BindingSource 구성 요소는 두가지 용도로 사용됩니다. 먼저 컨트롤을 데이터에 바인딩할 때 추상화 계층을 제공합니다. 폼의 컨트롤은 데이터 원본 대신 BindingSource 구성 요소에 바인딩됩니다. 둘째, 개체 컬렉션을 관리할 수 있습니다. 형식을 추가하면 BindingSource 해당 형식의 목록이 만들어집니다.
구성 요소에 대한 자세한 내용은 BindingSource을 참조하세요.
BindingNavigator 컨트롤은 Windows 애플리케이션에서 표시하는 데이터를 탐색하기 위한 사용자 인터페이스를 제공합니다.
DataGridView 컨트롤의 데이터에 바인딩
DataGridView 컨트롤의 경우 전체 테이블이 해당 단일 컨트롤에 바인딩됩니다.
DataGridView를 폼으로 끌면 레코드(BindingNavigator)를 탐색하기 위한 도구 스트립도 나타납니다.
DataSet, TableAdapter, BindingSource, BindingNavigator가 구성 요소 트레이에 나타납니다. 다음 그림에서는 Customers 테이블에 Orders 테이블과 관계가 있으므로 TableAdapterManager 도 추가됩니다. 이러한 변수는 모두 자동 생성된 코드에서 양식 클래스의 프라이빗 멤버로 선언됩니다.
DataGridView를 채우기 위한 자동 생성된 코드는 이벤트 처리기에 있습니다Form_Load
. 데이터베이스를 업데이트하기 위해 데이터를 저장하는 코드는 BindingNavigator에 Save
대한 이벤트 처리기에 있습니다. 필요에 따라 이 코드를 이동하거나 수정할 수 있습니다.
각각의 오른쪽 위 모서리에 있는 스마트 태그를 클릭하여 DataGridView 및 BindingNavigator 의 동작을 사용자 지정할 수 있습니다.
데이터 원본 창 내에서 애플리케이션에 필요한 컨트롤을 사용할 수 없는 경우 컨트롤을 추가할 수 있습니다. 자세한 내용은 데이터 원본 창에 사용자 지정 컨트롤 추가를 참조하세요.
데이터 원본 창의 항목을 폼의 컨트롤로 끌어서 컨트롤을 데이터에 바인딩할 수도 있습니다. 데이터에 이미 바인딩된 컨트롤에는 데이터 바인딩이 가장 최근에 끌어온 항목으로 다시 설정됩니다. 유효한 놓기 대상이 되려면 컨트롤이 데이터 원본 창에서 끌어온 항목의 기본 데이터 형식을 표시할 수 있어야 합니다. 예를 들어, 데이터 유형 DateTime을 가진 항목을 CheckBox에 끌어다 놓는 것은 유효하지 않습니다. 왜냐하면 CheckBox은(는) 날짜를 표시할 수 없기 때문입니다.
개별 컨트롤의 데이터에 바인딩
데이터 원본을 Details에 바인딩하면 데이터 세트의 각 열이 별도의 컨트롤에 바인딩됩니다.
중요합니다
참고로, 이전 그림에서는 Customers 테이블의 Orders 속성에서 끌어오며, Orders 테이블에서 끌어오는 것이 아닙니다. 속성에 Customer.Orders
바인딩하면 DataGridView 에서 만든 탐색 명령이 세부 정보 컨트롤에 즉시 반영됩니다. Orders 테이블에서 끌어 온 경우 컨트롤은 여전히 데이터 세트에 바인딩되지만 DataGridView와 동기화되지는 않습니다.
다음 그림에서는 Customers 테이블의 Orders 속성이 데이터 원본 창의 세부 정보에 바인딩된 후 양식에 추가되는 기본 데이터 바인딩된 컨트롤을 보여 줍니다 .
또한 각 컨트롤에는 스마트 태그가 있습니다. 이 태그는 해당 컨트롤에만 적용되는 사용자 지정을 사용하도록 설정합니다.