다음을 통해 공유


방법: 양식 데이터 액세스

InfoPath 양식의 기능을 확장하려는 경우 양식의 원본으로 사용하는 XML 문서에 대한 정보에 프로그래밍 방식으로 액세스하거나, XML 문서에 포함된 데이터에 액세스하거나, XML 문서에 대해 특정 작업을 실행해야 합니다. InfoPath 개체 모델에서는 XmlFormCollection 클래스와 함께 XmlForm 클래스를 사용하여 양식의 원본으로 사용하는 XML 문서에 액세스하고 해당 문서를 조작할 수 있습니다.

XmlForm 클래스는 양식의 원본으로 사용하는 XML 문서와 상호 작용할 뿐만 아니라 InfoPath 사용자 인터페이스에서 사용할 수 있는 많은 작업을 수행하는 다양한 속성과 메서드를 제공하므로 InfoPath 개체 모델에서 가장 유용한 형식 중 하나입니다.

XmlFormCollection 클래스 개요

XmlFormCollection 클래스는 양식 개발자가 컬렉션에 포함된 XmlForm 개체를 관리하는 데 사용할 수 있는 다음 메서드와 속성을 제공합니다.

이름 설명

New 메서드

지정된 양식을 기초로 새 양식을 만듭니다.

New 메서드(오버로드 1)

지정된 열기 모드 동작을 사용하여 특정 양식을 기초로 새 양식을 만듭니다.

NewFromFormTemplate 메서드

지정한 양식 서식 파일을 기반으로 새 양식을 만듭니다.

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 컬렉션에 대한 참조를 가져옵니다.

GetWorkflowTemplates 메서드

현재 양식의 Microsoft.Office.Core.WorkflowTemplates 컬렉션에 대한 참조를 가져옵니다.

MergeForm 메서드

경로 또는 URL로 지정한 양식과 현재 양식을 병합합니다.

MergeForm 메서드(오버로드 1)

메서드에 전달된 XPathNavigator에서 반환한 노드에 지정된 대상 양식과 현재 양식을 병합합니다.

NotifyHost 메서드

호스팅 응용 프로그램 또는 ASPX 페이지에 사용자 지정 값을 제공합니다.

Print 메서드

양식 내용을 해당 양식의 현재 보기에 렌더링되는 대로 인쇄합니다.

Print 메서드(오버로드 1)

인쇄 대화 상자를 표시하여 양식의 현재 보기에 렌더링된 대로 양식 내용을 인쇄합니다.

Save 메서드

현재 연결된 URL(Uniform Resource Locator)에 양식을 저장합니다.

SaveAs 메서드

지정한 URL(Uniform Resource Locator)에 양식을 저장합니다.

SetSaveAsDialogFilename 메서드

다른 이름으로 저장 대화 상자에 대한 기본 파일 이름을 설정합니다.

SetSaveAsDialogLocation 메서드

다른 이름으로 저장 대화 상자를 사용하여 양식을 저장하기 위한 기본 경로를 설정합니다.

Submit 메서드

양식 서식 파일에 정의된 전송 작업을 사용하여 양식을 전송합니다.

CurrentView 속성

양식의 현재 보기를 나타내는 View 개체를 가져옵니다.

DataConnections 속성

양식에 연결된 DataConnectionCollection 개체를 가져옵니다.

DataSources 속성

양식에 연결된 DataSourceCollection 개체를 가져옵니다.

Dirty 속성

양식의 데이터가 마지막으로 저장된 이후에 수정되었는지 여부를 나타내는 값을 가져옵니다.

Errors 속성

양식에 연결된 FormErrorCollection에 대한 참조를 가져옵니다.

Extension 속성

System.Reflection을 사용하여 양식의 기본 양식 코드 파일에 포함된 함수 및 전역 변수에 액세스하기 위한 Object를 가져옵니다.

FormState 속성

브라우저 사용 양식에서 서버의 세션 간에 상태 정보를 유지하는 데 사용할 수 있는 System.Collections.IDictionary 형식의 속성 모음에 대한 참조를 가져옵니다.

Host 속성

호스팅된 InfoPath 인스턴스에서 실행되는 코드가 호스트 응용 프로그램의 개체 모델에 액세스하는 데 사용할 수 있는 System.Object를 가져옵니다.

Hosted 속성

InfoPath가 다른 응용 프로그램에서 컨트롤로 호스팅되어 있는지 여부를 나타내는 값을 가져옵니다.

HostName 속성

InfoPath를 컨트롤로 호스팅하는 응용 프로그램의 이름을 가져옵니다.

MainDataSource 속성

양식의 주 데이터 원본을 나타내는 DataSource 개체를 가져옵니다.

NamespaceManager 속성

양식에서 사용되는 네임스페이스를 확인, 추가 또는 제거하는 데 사용할 수 있는 XmlNamespaceManager 개체에 대한 참조를 가져옵니다.

New 속성

양식이 새 것인지 여부를 지정하는 값을 가져옵니다.

Permission 속성

양식에 연결된 Permission 개체에 대한 참조를 가져옵니다.

QueryDataConnection 속성

양식에 연결된 데이터 연결을 나타내는 DataConnection 개체에 대한 참조를 가져옵니다.

ReadOnly 속성

양식 서식 파일이 읽기 전용이거나 잠겨 있는지 여부를 나타내는 값을 가져옵니다.

Recovered 속성

자동 복구 저장 작업을 통해 양식이 마지막으로 저장되었는지 여부를 나타내는 값을 가져옵니다.

Signed 속성

디지털 서명을 사용하여 양식이 디지털 서명되었는지 여부를 나타내는 값을 가져옵니다.

SignedDataBlocks 속성

양식에 연결된 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, SignedUri 속성에 액세스하고 현재 양식에 대해 반환된 값을 메시지 상자에 표시합니다.

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")