방법: 양식 데이터 액세스
InfoPath 양식의 기능을 확장하려는 경우 양식의 원본으로 사용하는 XML 문서에 대한 정보에 프로그래밍 방식으로 액세스하거나, XML 문서에 포함된 데이터에 액세스하거나, XML 문서에 대해 특정 작업을 실행해야 합니다. InfoPath 개체 모델에서는 XmlFormCollection 클래스와 함께 XmlForm 클래스를 사용하여 양식의 원본으로 사용하는 XML 문서에 액세스하고 해당 문서를 조작할 수 있습니다.
XmlForm 클래스는 양식의 원본으로 사용하는 XML 문서와 상호 작용할 뿐만 아니라 InfoPath 사용자 인터페이스에서 사용할 수 있는 많은 작업을 수행하는 다양한 속성과 메서드를 제공하므로 InfoPath 개체 모델에서 가장 유용한 형식 중 하나입니다.
XmlFormCollection 클래스 개요
XmlFormCollection 클래스는 양식 개발자가 컬렉션에 포함된 XmlForm 개체를 관리하는 데 사용할 수 있는 다음 메서드와 속성을 제공합니다.
이름 | 설명 |
---|---|
New 메서드 |
지정된 양식을 기초로 새 양식을 만듭니다. |
New 메서드(오버로드 1) |
지정된 열기 모드 동작을 사용하여 특정 양식을 기초로 새 양식을 만듭니다. |
지정한 양식 서식 파일을 기반으로 새 양식을 만듭니다. |
|
NewFromFormTemplate 메서드(오버로드 1) |
지정한 양식 서식 파일과 XML 데이터를 기반으로 새 양식을 만듭니다. |
NewFromFormTemplate 메서드(오버로드 2) |
XPathNavigator 개체에 의해 지정된 데이터를 사용하여 지정한 양식 서식 파일을 기반으로 새 양식을 만듭니다. |
NewFromFormTemplate 메서드(오버로드 3) |
XPathNavigator개체에 의해 지정된 데이터와 지정한 열기 모드 동작을 사용하여 지정한 양식 서식 파일을 기반으로 새 양식을 만듭니다. |
Open 메서드 |
지정된 양식을 엽니다. |
Open 메서드(오버로드 1) |
지정된 열기 모드 동작을 사용하여 특정 양식을 엽니다. |
Count 속성 |
컬렉션에 포함된 XmlForm 개체의 수를 가져옵니다. |
Item 속성 |
인덱스 값으로 컬렉션에서 지정한 XmlForm 개체에 대한 참조를 가져옵니다. |
XmlForm 인터페이스 개요
XmlForm 클래스는 양식 개발자가 양식의 원본으로 사용하는 XML 문서와 상호 작용하고 관련 작업을 수행하는 데 사용할 수 있는 다음 메서드와 속성을 제공합니다.
이름 | 설명 |
---|---|
Close 메서드 |
양식을 닫습니다. |
GetWorkflowTasks 메서드 |
현재 양식의 Microsoft.Office.Core.WorkflowTasks 컬렉션에 대한 참조를 가져옵니다. |
현재 양식의 Microsoft.Office.Core.WorkflowTemplates 컬렉션에 대한 참조를 가져옵니다. |
|
MergeForm 메서드 |
경로 또는 URL로 지정한 양식과 현재 양식을 병합합니다. |
MergeForm 메서드(오버로드 1) |
메서드에 전달된 XPathNavigator에서 반환한 노드에 지정된 대상 양식과 현재 양식을 병합합니다. |
NotifyHost 메서드 |
호스팅 응용 프로그램 또는 ASPX 페이지에 사용자 지정 값을 제공합니다. |
Print 메서드 |
양식 내용을 해당 양식의 현재 보기에 렌더링되는 대로 인쇄합니다. |
Print 메서드(오버로드 1) |
인쇄 대화 상자를 표시하여 양식의 현재 보기에 렌더링된 대로 양식 내용을 인쇄합니다. |
Save 메서드 |
현재 연결된 URL(Uniform Resource Locator)에 양식을 저장합니다. |
SaveAs 메서드 |
지정한 URL(Uniform Resource Locator)에 양식을 저장합니다. |
다른 이름으로 저장 대화 상자에 대한 기본 파일 이름을 설정합니다. |
|
다른 이름으로 저장 대화 상자를 사용하여 양식을 저장하기 위한 기본 경로를 설정합니다. |
|
Submit 메서드 |
양식 서식 파일에 정의된 전송 작업을 사용하여 양식을 전송합니다. |
CurrentView 속성 |
양식의 현재 보기를 나타내는 View 개체를 가져옵니다. |
양식에 연결된 DataConnectionCollection 개체를 가져옵니다. |
|
DataSources 속성 |
양식에 연결된 DataSourceCollection 개체를 가져옵니다. |
Dirty 속성 |
양식의 데이터가 마지막으로 저장된 이후에 수정되었는지 여부를 나타내는 값을 가져옵니다. |
Errors 속성 |
양식에 연결된 FormErrorCollection에 대한 참조를 가져옵니다. |
Extension 속성 |
System.Reflection을 사용하여 양식의 기본 양식 코드 파일에 포함된 함수 및 전역 변수에 액세스하기 위한 Object를 가져옵니다. |
FormState 속성 |
브라우저 사용 양식에서 서버의 세션 간에 상태 정보를 유지하는 데 사용할 수 있는 System.Collections.IDictionary 형식의 속성 모음에 대한 참조를 가져옵니다. |
Host 속성 |
호스팅된 InfoPath 인스턴스에서 실행되는 코드가 호스트 응용 프로그램의 개체 모델에 액세스하는 데 사용할 수 있는 System.Object를 가져옵니다. |
Hosted 속성 |
InfoPath가 다른 응용 프로그램에서 컨트롤로 호스팅되어 있는지 여부를 나타내는 값을 가져옵니다. |
HostName 속성 |
InfoPath를 컨트롤로 호스팅하는 응용 프로그램의 이름을 가져옵니다. |
양식의 주 데이터 원본을 나타내는 DataSource 개체를 가져옵니다. |
|
양식에서 사용되는 네임스페이스를 확인, 추가 또는 제거하는 데 사용할 수 있는 XmlNamespaceManager 개체에 대한 참조를 가져옵니다. |
|
New 속성 |
양식이 새 것인지 여부를 지정하는 값을 가져옵니다. |
Permission 속성 |
양식에 연결된 Permission 개체에 대한 참조를 가져옵니다. |
양식에 연결된 데이터 연결을 나타내는 DataConnection 개체에 대한 참조를 가져옵니다. |
|
ReadOnly 속성 |
양식 서식 파일이 읽기 전용이거나 잠겨 있는지 여부를 나타내는 값을 가져옵니다. |
Recovered 속성 |
자동 복구 저장 작업을 통해 양식이 마지막으로 저장되었는지 여부를 나타내는 값을 가져옵니다. |
Signed 속성 |
디지털 서명을 사용하여 양식이 디지털 서명되었는지 여부를 나타내는 값을 가져옵니다. |
양식에 연결된 SignedDataBlockCollection 컬렉션에 대한 참조를 가져옵니다. |
|
TaskPanes 속성 |
양식 서식 파일에 연결된 TaskPaneCollection에 대한 참조를 가져옵니다. |
Template 속성 |
양식에 연결된 양식 서식 파일의 매니페스트(.xsf)를 나타내는 FormTemplate 개체에 대한 참조를 가져옵니다. |
Uri 속성 |
양식의 URI(Uniform Resource Identifier)를 가져옵니다. |
UserRole 속성 |
양식 역할 이름의 현재 사용자를 가져오거나 설정합니다. |
ViewInfos 속성 |
양식 서식 파일에 연결된 ViewInfoCollection 개체에 대한 참조를 가져옵니다. |
XmlLang 속성 |
양식의 원본으로 사용하는 XML 문서에서 xml:lang 특성 값을 가져옵니다. |
XmlFormCollection 클래스 사용
XmlFormCollection 클래스는 Application 클래스의 XmlForms 속성을 통해 액세스합니다. Microsoft.Office.InfoPath 네임스페이스의 구성원이 제공하는 개체 모델을 사용하여 만든 관리 코드 양식 서식 파일에서는 양식 코드에 this(C#) 또는 Me(Visual Basic) 키워드를 사용하여 Application 클래스와 해당 구성원에 액세스할 수 있습니다.
다음 예제에서는 Application 클래스의 XmlForms 속성을 사용하여 현재 실행 중인 InfoPath 인스턴스의 XDocumentsCollection 개체를 참조하는 myForms라는 개체 변수를 만듭니다. 이 변수는 열려 있는 양식의 수를 표시하는 데 사용됩니다.
// Create variable for accessing the XmlFormCollection.
XmlFormCollection myForms = this.Application.XmlForms;
// Display the number of forms that are currently open.
MessageBox.Show("Forms open: " + myForms.Count);
// Create variable for accessing the XmlFormCollection.
Dim myForms As XmlFormCollection = Me.Application.XmlForms
' Display the number of forms that are currently open.
MessageBox.Show("Forms open: " + myForms.Count)
myForms 변수를 사용하여 새 양식을 만들거나(New 또는 NewFromTemplate 메서드 중 하나 사용) 기존 양식을 열 수도 있습니다(Open 메서드 중 하나 사용).
XmlForm 클래스 사용
Microsoft.Office.InfoPath 네임스페이스의 구성원이 제공하는 개체 모델을 사용하여 만든 관리 코드 양식 서식 파일에서는 양식 코드에 this(C#) 또는 Me(Visual Basic) 키워드를 사용하여 XmlForm 키워드에 대한 참조 없이도 XmlForm 클래스의 구성원에 직접 액세스할 수 있습니다.
양식의 속성 값 액세스
다음 예제에서는 this 또는 Me 키워드를 사용하여 XmlForm 클래스의 New, ReadOnly, Signed 및 Uri 속성에 액세스하고 현재 양식에 대해 반환된 값을 메시지 상자에 표시합니다.
MessageBox.Show(
"Is new: " + this.New + System.Environment.NewLine +
"Is read-only: " + this.ReadOnly + System.Environment.NewLine +
"Is signed: " + this.Signed + System.Environment.NewLine +
"Form URI: " + this.Uri);
MessageBox.Show( _
"Is new: " & this.New + System.Environment.NewLine & _
"Is read-only: " & this.ReadOnly & System.Environment.NewLine + _
"Is signed: " & this.Signed & System.Environment.NewLine & _
"Form URI: " & this.Uri)
양식의 데이터 원본 액세스
양식 데이터와 관련된 XmlForm 클래스의 핵심 속성은 MainDataSource 속성입니다. 이 속성은 현재 양식의 원본으로 사용하는 XML 데이터를 나타내는 DataSource 개체에 대한 참조를 반환하며 이 데이터를 양식의 기본 또는 주 데이터 원본이라고도 합니다. DataSource 클래스는 양식의 원본으로 사용하는 XML 문서의 루트에 위치한 System.Xml.XPath.XPathNavigator 개체를 만드는 CreateNavigator 메서드를 제공합니다. XPathNavigator 클래스의 속성과 메서드를 사용하여 양식의 원본으로 사용하는 XML 데이터를 탐색하고 편집할 수 있습니다.
다음 예제에서는 XmlForm 클래스의 MainDataSource 속성을 사용하여 양식의 주 데이터 원본 루트에 위치한 XPathNavigator 개체를 만듭니다. XPathNavigator 클래스의 OuterXml 속성은 양식의 원본으로 사용하는 XML 문서 내용을 모두 반환하고 표시하는 데 사용됩니다.
// Get outer XML of the underlying XML document.
string myDoc = this.MainDataSource.CreateNavigator.OuterXml.ToString();
// Display XML.
MessageBox.Show(myDoc);
' Get outer XML of the underlying XML document.
Dim myDoc As String myDoc = _
Me.MainDataSource.CreateNavigator.OuterXml.ToString()
' Display XML.
MessageBox.Show(myDoc)
![]() |
---|
InfoPath에서는 this 또는 Me 키워드를 사용할 때 액세스하는 XmlForm 개체의 기본 속성으로 MainDataSource 속성이 사용되므로 XPathNavigator 개체를 만드는 데 사용되는 코드 줄에서 이 속성을 생략할 수 있습니다. |
InfoPath 양식 서식 파일 비즈니스 논리의 XPathNavigator 클래스에 대한 자세한 내용은 방법: XPathNavigator 및 XPathNodeIterator 클래스 사용을 참고하십시오.
양식에 연결된 양식 서식 파일 관련 데이터 액세스
XmlForm 클래스를 사용하여 양식 정의 파일(.xsf )과 이 파일에 포함된 원본 XML 데이터 등 양식에 연결된 양식 서식 파일 정보에 액세스할 수도 있습니다. 이 정보는 현재 양식에 연결된 양식 서식 파일을 나타내는 FormTemplate 개체에 대한 참조를 반환하는 Template 속성을 사용하여 액세스합니다.
다음 예제에서 첫 번째 메시지 상자에는 Template 클래스를 통해 사용할 수 있는 데이터 중 일부가 표시됩니다. 여기에는 URI(Uniform Resource Identifier) 위치(Uri 속성 사용), 캐시 식별자(CacheId 속성 사용), 해당 버전 번호(Version 속성 사용) 등이 포함됩니다. 다음 메시지 상자는 Template 클래스의 Manifest 속성을 사용하여 양식 정의 파일(.xsf)의 원본 XML을 표시하는 데 사용되는 XPathNavigator 개체를 만듭니다.
// Display form template properties.
MessageBox.Show(
"Cache ID: " + this.Template.CacheId + System.Environment.NewLine +
"URI: " + this.ReadOnly + System.Environment.NewLine +
"Version: " + this.Signed, "Form Template Properties");
// Display form definition file XML.
MessageBox.Show(this.Template.Manifest.OuterXml,
"Form Definition File XML");
' Display form template properties.
MessageBox.Show( _
"Cache ID: " & Me.Template.CacheId & System.Environment.NewLine &
"URI: " & Me.ReadOnly & System.Environment.NewLine &
"Version: " & Me.Signed, "Form Template Properties")
' Display form definition file XML.
MessageBox.Show(Me.Template.Manifest.OuterXml, _
"Form Definition File XML")