연습: 데이터 집합에 유효성 검사 추가
이 연습에서는 데이터 집합의 데이터를 변경할 때 데이터 유효성을 검사하는 방법을 보여 줍니다.데이터에 대한 유효성 검사를 수행하는 장소는 응용 프로그램의 요구 사항에 따라 다릅니다. 이 연습의 경우 개별 열의 값을 변경하는 동안 데이터의 유효성을 검사합니다.이 연습에서는 ColumnChanging 이벤트를 사용하여 레코드에 올바른 값이 입력되는지 확인합니다.값이 올바르지 않으면 사용자에게 ErrorProvider 컨트롤이 표시됩니다.
또한 이 예제에서는 데이터 집합 디자이너를 사용하여 데이터 집합의 partial 클래스를 만듭니다.partial 클래스는 사용자가 코드를 추가하여 생성된 데이터 집합인 Visual Studio의 기능을 확장할 수 있는 장소로,데이터 집합을 다시 생성해도 덮어쓰여지지 않습니다.
[!참고]
다음 지침처럼 컴퓨터에서 Visual Studio 사용자 인터페이스 요소 일부에 대한 이름이나 위치를 다르게 표시할 수 있습니다. 이러한 요소는 사용하는 Visual Studio 버전 및 설정에 따라 결정됩니다. 자세한 내용은 Visual Studio 설정을 참조하십시오.
이 연습에서 수행할 작업은 다음과 같습니다.
새 Windows 응용 프로그램 프로젝트 만들기
데이터 소스 구성 마법사를 사용하여 데이터 집합을 만들고 구성합니다.
데이터 소스 창에서 항목을 끌어 올 때 폼에 만들 컨트롤을 선택합니다.자세한 내용은 방법: 데이터 소스 창에서 끌어 올 때 만들 컨트롤 설정을 참조하십시오.
데이터 소스 창에서 폼으로 항목을 끌어서 놓아 데이터 바인딩된 컨트롤을 만듭니다.
partial 클래스를 만들어 데이터 집합의 기능을 확장합니다.
OrderDetails 테이블의 ColumnChanging 이벤트에 대한 이벤트 처리기를 만듭니다.
Quantity 열에 0보다 큰 값이 포함되어 있는지 확인하는 유효성 검사를 추가합니다.
ErrorProvider 구성 요소(Windows Forms)를 표시하여 데이터 바인딩된 컨트롤에 잘못된 값이 있음을 사용자에게 알립니다.
사전 요구 사항
이 연습을 완료하려면 다음과 같은 요건이 필요합니다.
- Northwind 샘플 데이터베이스에 액세스할 수 있어야 합니다.자세한 내용은 방법: 샘플 데이터베이스 설치를 참조하십시오.
새 Windows 응용 프로그램 만들기
새 Windows 응용 프로그램 프로젝트를 만들려면
파일 메뉴에서 새 프로젝트를 만듭니다.
프로젝트 이름을 ValidationWalkthrough로 지정합니다.
Windows 응용 프로그램을 선택하고 확인을 클릭합니다.자세한 내용은 클라이언트 응용 프로그램 개발를 참조하십시오.
ValidationWalkthrough 프로젝트가 만들어져 솔루션 탐색기에 추가되었습니다.
데이터베이스에서 새 데이터 소스 만들기
데이터 소스를 만들려면
데이터 메뉴에서 데이터 소스 표시를 클릭합니다.
데이터 소스 창에서 새 데이터 소스 추가를 선택하여 데이터 소스 구성 마법사를 시작합니다.
데이터 소스 형식 선택 페이지에서 데이터베이스를 선택하고 다음을 클릭합니다.
데이터 연결 선택 페이지에서 다음 중 하나를 수행합니다.
Northwind 샘플 데이터베이스에 대한 데이터 연결이 드롭다운 목록에 표시되면 해당 연결을 선택합니다.
또는
새 연결을 선택하여 연결 추가/수정 대화 상자를 시작합니다.자세한 내용은 연결 추가/수정 대화 상자(일반)을 참조하십시오.
데이터베이스에 암호가 필요하면 중요한 데이터를 포함하는 옵션을 선택하고 다음을 클릭합니다.
응용 프로그램 구성 파일에 연결 문자열 저장 페이지에서 다음을 클릭합니다.
데이터베이스 개체 선택 페이지에서 테이블 노드를 확장합니다.
Order Details 테이블을 선택한 다음 마침을 클릭합니다.
NorthwindDataSet가 프로젝트에 추가되고 OrderDetails 테이블이 데이터 소스 창에 나타납니다.
데이터 바인딩된 컨트롤 만들기
폼에 데이터 바인딩된 컨트롤을 만들려면
데이터 소스 창에서 Order Details 테이블을 선택합니다.
테이블의 컨트롤 목록에서 자세히를 선택합니다.
Order Details 노드를 데이터 소스 창에서 Form1으로 끌어서 놓습니다.
레코드 탐색에 사용되는 도구 스트립(BindingNavigator)과 설명 레이블이 있는 데이터 바인딩된 컨트롤이 폼에 나타납니다.레코드 탐색에 사용되는 도구 스트립(BindingNavigator)과 설명 레이블이 있는 데이터 바인딩된 컨트롤이 폼에 나타납니다.NorthwindDataSet, Order_DetailsTableAdapter, BindingSource 및 BindingNavigator가 구성 요소 트레이에 나타납니다.
폼에 ErrorProvider 컨트롤 추가
ErrorProvider 컨트롤을 구성하려면
ErrorProvider를 도구 상자에서 Form1으로 끌어서 놓습니다.
속성 창에서 ErrorProvider의 DataSource 속성을 Order_DetailsBindingSource로 설정합니다.
[!참고]
DataMember 속성을 설정하지 마십시오.
ColumnChanging 이벤트 처리기 만들기
유효성 검사 이벤트 처리기를 만들려면
솔루션 탐색기에서 NorthwindDataSet.xsd 파일을 두 번 클릭하여 데이터 집합 디자이너에서 NorthwindDataSet를 엽니다.
OrderDetails 테이블의 Quantity 열을 두 번 클릭하여 OrderDetailsDataTable_ColumnChanging 이벤트 처리기를 만듭니다.C#에서는 데이터 테이블의 partial 클래스만 만들어집니다.
[!참고]
테이블 이름(제목 표시줄의 Order Details)을 두 번 클릭하면 RowChanging 이벤트에 대한 이벤트 처리기가 만들어집니다.
e.ProposedValue에 0보다 큰 값이 포함되어 있는지 확인하는 코드를 추가합니다.제안된 값이 0 이하인 경우 오류가 있음을 나타내도록 열을 설정합니다.
다음 코드를 사용자 코드를 여기에 추가하십시오. 주석 아래의 열 변경 이벤트 처리기에 붙여넣습니다.
If CType(e.ProposedValue, Short) <= 0 Then e.Row.SetColumnError(e.Column, "Quantity must be greater than 0") Else e.Row.SetColumnError(e.Column, "") End If
// C# // Add the following code // to the partial class. public override void EndInit() { base.EndInit(); Order_DetailsRowChanging += TestRowChangeEvent; } public void TestRowChangeEvent(object sender, Order_DetailsRowChangeEvent e) { if ((short)e.Row.Quantity <= 0) { e.Row.SetColumnError("Quantity", "Quantity must be greater than 0"); } else { e.Row.SetColumnError("Quantity", ""); } }
응용 프로그램 테스트
응용 프로그램을 테스트하려면
F5 키를 눌러 응용 프로그램을 실행합니다.
Quantity 텍스트 상자의 값을 0으로 변경합니다.
Tab 키를 눌러 포커스를 텍스트 상자 밖으로 이동합니다.
오류 공급자 아이콘이 나타납니다.
오류 공급자 위에 마우스 포인터를 올려 메시지를 봅니다.
다음 단계
응용 프로그램 요구 사항에 따라 유효성 검사를 추가한 후 몇 가지 단계를 더 수행해야 할 수 있습니다.이 연습에서 보완할 수 있는 사항은 다음과 같습니다.
업데이트된 내용을 다시 데이터베이스에 보내는 기능을 추가합니다.자세한 내용은 연습: 데이터베이스에 데이터 저장(단일 테이블)을 참조하십시오.
데이터 집합을 편집하여 데이터베이스 개체를 추가하거나 제거합니다.자세한 내용은 방법: 데이터 집합 편집을 참조하십시오.
참고 항목
개념
Visual Studio 2012 데이터 응용 프로그램 개발의 새로운 기능
Visual Studio에서 데이터에 Windows Forms 컨트롤 바인딩