방법: 행 변경 중 데이터 유효성 검사
데이터 유효성 검사는 응용 프로그램 데이터에 입력할 값을 확인하는 과정입니다.업데이트를 내부 데이터 저장소에 보내기 전에 이러한 값을 확인하는 것이 좋습니다.이렇게 하면 응용 프로그램과 데이터 저장소 사이에 발생할 수 있는 라운드트립 수를 줄일 수 있기 때문입니다.
[!참고]
데이터 집합 디자이너는 데이터 집합에 유효성 검사 논리를 추가할 수 있는 partial 클래스를 만듭니다.디자이너에서 생성한 데이터 집합은 partial 클래스의 코드를 삭제하거나 변경하지 않습니다.
RowChanging 이벤트에 응답하여 데이터 행의 값이 변경될 때 데이터의 유효성 검사를 할 수 있습니다.이 이벤트는 발생될 때 현재 행의 각 열에 대한 제안 값이 포함된 이벤트 인수(e.Row)를 전달합니다.e.Row에 있는 각 열의 내용에 따라 다음을 할 수 있습니다.
아무런 작업도 수행하지 않고 제안된 값을 받아들입니다.
행 변경 이벤트 처리기에서 열 오류(SetColumnError)를 설정하여 제안된 값을 거부합니다.
선택에 따라 ErrorProvider 컨트롤을 사용하여 사용자에게 오류 메시지를 표시할 수 있습니다.자세한 내용은 ErrorProvider 구성 요소(Windows Forms)를 참조하십시오.
또한 ColumnChanging 이벤트를 사용하여 개별 열 변경 중에 유효성 검사를 수행할 수도 있습니다.자세한 내용은 방법: 열 변경 중 데이터 유효성 검사를 참조하십시오.
RowChanging 이벤트의 데이터 유효성 검사
유효성을 검사할 각 열에 응용 프로그램의 요구 사항에 맞는 데이터가 들어 있는지 확인하는 코드를 작성할 수 있습니다.제안된 값이 적합하지 않으면 오류가 있음을 나타내도록 열을 설정합니다.다음 예제에서는 Quantity 열이 0보다 작거나 같을 때 열 오류를 설정합니다.행 변경 이벤트 처리기는 다음 예제와 같습니다.
행이 변경될 때 데이터의 유효성을 검사하려면(Visual Basic)
데이터 집합 디자이너에서 데이터 집합을 엽니다.자세한 내용은 방법: 데이터 집합 디자이너에서 데이터 집합 열기를 참조하십시오.
유효성을 검사할 테이블의 제목 표시줄을 두 번 클릭합니다.이렇게 하면 데이터 집합의 partial 클래스 파일에 DataTable의 RowChanging 이벤트 처리기가 자동으로 만들어집니다.
팁 행 변경 이벤트 처리기를 만들 테이블 이름의 왼쪽을 두 번 클릭합니다.테이블 이름을 두 번 클릭하면 테이블 이름을 편집할 수 있습니다.
Private Sub Order_DetailsDataTable_Order_DetailsRowChanging( ByVal sender As System.Object, ByVal e As Order_DetailsRowChangeEvent ) Handles Me.Order_DetailsRowChanging If CType(e.Row.Quantity, Short) <= 0 Then e.Row.SetColumnError("Quantity", "Quantity must be greater than 0") Else e.Row.SetColumnError("Quantity", "") End If End Sub
행이 변경될 때 데이터의 유효성을 검사하려면(C#)
데이터 집합 디자이너에서 데이터 집합을 엽니다.자세한 내용은 방법: 데이터 집합 디자이너에서 데이터 집합 열기를 참조하십시오.
유효성을 검사할 테이블의 제목 표시줄을 두 번 클릭합니다.이렇게 하면 DataTable에 대한 partial 클래스 파일이 만들어집니다.
[!참고]
데이터 집합 디자이너에서는 RowChanging 이벤트에 대한 이벤트 처리기가 자동으로 만들어지지 않습니다.따라서 메서드를 만들어 RowChanging 이벤트를 처리하고 코드를 실행하여 테이블의 초기화 메서드에서 이벤트를 후크해야 합니다.
다음 코드를 partial 클래스에 복사합니다.
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", ""); } }
참고 항목
작업
참조
개념
Visual Studio 2012 데이터 응용 프로그램 개발의 새로운 기능