Infopath 에서 데이터 유효성 검증 을 실현 하 는 세 가지 방법
Infopath 를 사용 하여 XML 전단 폼 페이지 를 개발 하려 면 XML 예제 파일 을 작성 하고 XML Schema 파일 을 생 성 하 며 Infopath 에서 메 인 데이터 원본 을 가 져 오고 Infopath 폼 을 디자인 해 야 합 니 다.필요 하 다 면 폼 을 열 고 저장 할 때 실행 할 동작,추가 단추 의 실행 동작 등 C\#이벤트 코드 를 추가 할 수 있 습 니 다.독자 가 Infopath 의 개발 에 관심 이 있 으 면 단독으로 연구 할 수 있다.본 고 는 주로 Infopath 에서 데이터 의 유효성 검증 을 어떻게 실현 하 는 지 소개 한다.
Infopath 에서 데이터 의 유효성 검증 을 실현 할 수 있 는 세 가지 방법 이 있 습 니 다.
1.Infopath 의 내 장 된 데이터 형식 을 사용 합 니 다.
2.입력 항목 에 사용자 정의 데이터 검증 조건 이나 검증 이 벤트 를 추가 합 니 다.
3.폼 사용자 정의 단추 에 규칙 이나 검증 이 벤트 를 추가 하여 데이터 유효성 검증 을 한다.
Infopath 내 장 된 데이터 형식 으로 데이터 자동 검증
이것 은 가장 간단 한 데이터 검증 방법 이다.Infopath 에 컨트롤 을 추가 하거나 메 인 데이터 원본 의 도 메 인 에 컨트롤 을 지정 할 때 컨트롤 의 입력 에 지정 한 데이터 형식 을 입력 할 수 있 습 니 다.Infopath 에 단독 메 인 데이터 원본 을 지정 하지 않 으 면 Infopath 는 폼 에 추 가 된 컨트롤 에 따라 데이터 원본 구 조 를 구축 합 니 다.폼 편집 전에 메 인 데이터 원본 이 지정 되 어 있 으 면 컨트롤 이 받 아들 이 는 데이터 형식 은 연 결 된 데이터 원본 미 드 필드 의 데이터 형식 에 의존 합 니 다.데이터 원본 미 드 필드 의 데이터 형식 은 XML Schema 파일 을 작성 할 때 단독으로 지정 할 수 있 습 니 다.지정 되 지 않 으 면 기본 값 은 String 형식 으로 모든 종류의 데 이 터 를 받 아들 일 수 있 음 을 표시 합 니 다.
Infopath 에서 데이터 유효성 검증 컨트롤 을 설정 하려 면 오른쪽 단 추 를 누 르 고'속성'을 누 르 거나 이 컨트롤 을 직접 두 번 누 르 면 팝 업 대화 상자 에 컨트롤 의 데이터 형식 을 설정 합 니 다.다음 그림: Infopath 는 다음 데이터 형식 을 지원 합 니 다:텍스트(string)정수(integer)소수(double)불(True/False)하이퍼링크(anyURI)날짜(date)시간(time)날짜 와 시간(datetime)
속성 대화 상자 에서 데이터 의 기본 값 과 데이터 형식 등 을 설정 할 수 있 습 니 다.컨트롤 의 데이터 형식 을 설정 하면 최종 사용자 가 폼 을 작성 할 때 형식 이 일치 하지 않 으 면 Infopath 는 해당 하 는 알림 정 보 를 제공 합 니 다.예 를 들 어
사용자 정의 데이터 검증 조건 이나 검증 이 벤트 를 사용 하여 데이터 유효성 검증
Infopath 에서 사용자 정의 데이터 검증 조건 을 설정 하거나 사용자 정의 이 벤트 를 작성 하여 데이터 의 유효성 검증 을 할 수 있 습 니 다.추가 프로 그래 밍 비용 이나 컴퓨터 프로 그래 밍 에 대한 지식 이 필요 합 니 다.
1.사용자 정의 데이터 검증 조건 사용
데이터 유효성 검증 컨트롤 을 설정 하려 면 오른쪽 단 추 를 누 르 고'속성'을 누 르 거나 이 컨트롤 을 직접 두 번 누 르 십시오.팝 업 대화 상자 에서'데이터 검증'단 추 를 누 르 고 팝 업 대화 상자 에서'추가'를 누 르 고 데이터 검증 대화 상자 에 데이터 검증 조건 을 설정 합 니 다.데이터 검증 에 실 패 했 을 때 화면의 알림 정보 와 경고 대화 상자 에 표시 할 메시지 내용 을 입력 하 십시오.
Infopath 는 사용자 가 직접 선택 할 수 있 도록 많은 데이터 검증 조건 을 통합 시 켰 습 니 다.예 를 들 어 도 메 인 에 있 는 값 이 크 고 작 으 며 같 으 며 포함 되 지 않 습 니 다.만약 에 자신의 일치 모드 를 정의 하려 면'일치 모드'나'일치 하지 않 는 모드'를 선택 한 다음 에 세 번 째 드 롭 다운 목록 에서'선택 모드'를 선택 할 수 있 습 니 다.팝 업 대화 상자 에 사용자 정의 모드 정규 표현 식 을 작성 합 니 다.예 를 들 어 이 도 메 인 은 소수점 을 포함 하 는 숫자 만 받 아들 일 수 있 도록 규정 하고 싶 습 니 다.다음 과 같은 정규 를 작성 할 수 있 습 니 다
-?[0-9]*\.?[0-9]+
그리고 경고 메 시 지 를 설정 할 수 있 습 니 다2.사용자 정의 인증 이벤트 사용
사용자 정의 인증 이 벤트 를 사용 하려 면 C\#코드 를 작성 하여 데이터 의 유효성 검증 을 해 야 합 니 다.Infopath 에 VSTA 프로 그래 밍 인터페이스 가 내장 되 어 있 기 때문에 Visual Studio 를 통 해 Infopath 에 C\#코드 를 작성 하여 특정한 기능 을 수행 할 수 있 습 니 다.이 글 을 작성 할 때 이 컴퓨터 의 개발 환경 은 Visual Studio 2008+Office 2007 입 니 다.Office 2007 을 설치 할 때 Infopath 항목 의 VSTA 옵션 을 수 동 으로 체크 해 야 합 니 다.그렇지 않 으 면 Infopath 는 기본적으로 VSTA 프로 그래 밍 인 터 페 이 스 를 지원 하지 않 습 니 다.Infopath 의 VSTA 가 기본적으로 사용 하 는 Visual Studio 2005 의 개발 환경 은 독자 가 Visual Studio 2005 를 특정한 설치 할 필요 가 없습니다.기본 적 인 상황 에서 VSTA 는 필요 한 프로그램 과 환경 을 설정 합 니 다
데이터 유효성 검증 컨트롤 을 설정 하려 면 오른쪽 단 추 를 누 르 고'프로 그래 밍'-'Validating 이벤트'를 선택 하 십시오.이 때 Infopath 는 Visual Studio 에 연락 하여 VSTA 프로젝트 를 엽 니 다.VSTA 프로젝트 에서 이벤트 에 사용자 정의 방법 을 추가 할 수 있 습 니 다.기본적으로 Infopath 는 VB.NET 언어 로 VSTA 프로젝트 를 만 듭 니 다.프로젝트 언어 를 변경 하려 면'도구'-'옵션'을 누 르 고'디자인'옵션 에서 언어 를 C\#로 선택 하 며 프로젝트 의 기본 저장 위 치 를 설정 할 수 있 습 니 다.이전에 VB.NET 언어의 VSTA 프로젝트 를 만 들 었 다 면'도구'-'폼 옵션'을 통 해'프로 그래 밍'옵션 카드 에서 코드 를 삭제 하고 새로운 VSTA 프로젝트 를 다시 만 들 수 있 습 니 다.여기 서도 본 Infopath 폼 의 VSTA 프로젝트 의 저장 위 치 를 선택 할 수 있 습 니 다
저 희 는 VSTA 에 다음 과 같은 코드 를 추가 하여 상기 사례 에서 디지털 형식의 데이터 검증 효 과 를 제한 합 니 다.
public void field1_Validating(object sender, XmlValidatingEventArgs e)
{
if (!e.UndoRedo && e.Operation == XmlOperation.ValueChange)
{
//
XPathNavigator root = MainDataSource.CreateNavigator();
string field1 = root.SelectSingleNode("//my:field1", NamespaceManager).Value;
//
System.Text.RegularExpressions.Regex regEx = new System.Text.RegularExpressions.Regex(@"-?[0-9]*\.?[0-9]+");
if (!regEx.IsMatch(field1))
{
e.ReportError(e.Site, true, " ");
}
}
}
코드 를 저장 하고 Visual Studio 를 닫 고 작 성 된 Infopath 폼 을 저장 하거나 발표 한 다음 에 폼 인 스 턴 스 를 직접 열 고 검증 할 도 메 인 에 내용 을 입력 합 니 다.검증 에 실 패 했 을 때 Infopath 는 검증 이벤트 코드 의 요구 에 따라 해당 하 는 알림 을 팝 업 합 니 다 단추 에 규칙 이나 검증 이 벤트 를 사용 하여 데이터 유효성 검증 을 진행 합 니 다.
Infopath 에서 위 에서 소개 한 두 가지 방법 으로 데이터 의 유효성 검증 을 실현 할 수 있 는 것 을 제외 하고 우 리 는 폼 의 버튼 에 규칙 을 설정 하고 이 벤트 를 검증 함으로써 도 메 인의 데이터 유효성 을 검증 할 수 있 습 니 다.
1.규칙 을 사용 하여 데이터 유효성 검증
예 를 들 어 폼 에 텍스트 상자,표현 식 상자,단추 가 있 습 니 다.사용자 가 텍스트 상자 에 입력 한 값 이 숫자 인지 확인 하고 표현 식 상자 에 정 보 를 표시 하고 싶 습 니 다.다음 단계 에 따라 버튼 에 규칙 을 추가 합 니 다.오른쪽 단 추 를 누 르 면'속성'을 클릭 하거나 단 추 를 두 번 누 르 면 팝 업 대화 상자 에서'규칙'단 추 를 누 릅 니 다."규칙"대화 상자 에서"추가"를 누 르 십시오."규칙"대화 상자 에서"추가 작업"을 누 르 십시오.'조작'대화 상자 에서'조작'드 롭 다운 목록 에서'도 메 인 값 설정'을 선택 하 십시오.'도 메 인'뒤의 단 추 를 누 르 면 팝 업 대화 상자 에서 표현 식 상자 에 연 결 된 도 메 인 을 선택 하고'확인'을 누 르 면 대화 상 자 를 닫 습 니 다.'조작'대화 상자 의'값'텍스트 상 자 를 비 워 두 고'확인'을 누 르 면 닫 힌 다음'규칙'대화 상 자 를 닫 습 니 다.이 때'규칙'대화 상자 에 새로운 규칙 이 추가 되 었 습 니 다.단 추 를 눌 렀 을 때 표현 식 상자 의 값 을 비 우 는 역할 을 합 니 다.앞의 절차 에 따라 하나의 규칙 을 추가 하고 표현 식 상자 에 연결 하 며 값 을'숫자 만 허용'으로 설정 합 니 다.규칙 2 에 조건 을 설정 합 니 다."조건"대화 상자 에서 검증 할 도 메 인 을 선택 한 다음"일치 하지 않 는 모드"를 선택 하고 일치 하 는 정규 표현 식 을-?[0-9]*\.?[0-9]+모든 대화 상 자 를 확인 하고 닫 습 니 다.
사용자 가 폼 인 스 턴 스 를 열 때 텍스트 상자 에 비 숫자 를 입력 한 다음 단 추 를 누 르 면 표현 식 상자 에 해당 하 는 알림 이 나타 납 니 다.사용자 가 입력 한 내용 이 인증 규칙 에 부합 되면 표현 식 상자 의 내용 이 비 워 집 니 다.
2.버튼 에 인증 이 벤트 를 사용 하여 데이터 유효성 검증
오른쪽 단 추 를 누 르 고"속성"을 누 르 거나"속성"대화 상자 에서"폼 코드 편집"을 누 르 십시오.VSTA 프로젝트 코드 에 단추 이벤트 가 새로 추가 되 었 습 니 다.아래 코드 를 추가 하 십시오.
public void CTRL2_5_Clicked(object sender, ClickedEventArgs e)
{
//
XPathNavigator root = MainDataSource.CreateNavigator();
//
root.SelectSingleNode("my:field2", NamespaceManager).SetValue("");
// ,
string field1 = root.SelectSingleNode("my:field1", NamespaceManager).Value;
System.Text.RegularExpressions.Regex regEx = new System.Text.RegularExpressions.Regex(@"-?[0-9]*\.?[0-9]+");
if (!regEx.IsMatch(field1))
{
root.SelectSingleNode("//my:field2", NamespaceManager).SetValue(" ");
}
}
주의:Infopath 에서 모든 데이터 검증 은 해당 하 는 알림 정보 만 제공 하고 사용 자 는 폼 을 강제로 저장 하고 데이터 유효성 검증 의 알림 정 보 를 무시 할 수 있 습 니 다.또한 본 논문 C\#코드 에서 사용 하 는 메 인 데이터 소스 노드 이름(예 를 들 어 my:field 1,my:field 2 등)은 실제 상황 에 따라 다르다.