Hosten der Bearbeitungsumgebung von InfoPath 2007-Formularen in einem benutzerdefinierten Webformular

Veröffentlicht: 17. Jul 2006

Von Mike Talley, Namita Sheokand, und Boris Rivers-Moore

Sie erfahren, wie Sie das ASP.NET-Steuerelement XmlFormView zusammen mit InfoPath Forms Services verwenden, um benutzerdefinierte Webseiten mit interaktiven InfoPath-Webformularen zu erstellen (13 gedruckte Seiten).

Auf dieser Seite

Einführung Einführung
Erstellen von benutzerdefinierten Webseiten in SharePoint Server 2007 Erstellen von benutzerdefinierten Webseiten in SharePoint Server 2007
Laden von InfoPath-Webformularvorlagen in das Steuerelement Laden von InfoPath-Webformularvorlagen in das Steuerelement
Programmieren mit dem Steuerelement XmlFormView Programmieren mit dem Steuerelement XmlFormView
Bereitstellen von benutzerdefinierten Webseiten auf SharePoint-Websites, die keine Stamm-SharePoint-Websites sind Bereitstellen von benutzerdefinierten Webseiten auf SharePoint-Websites, die keine Stamm-SharePoint-Websites sind
Überlegungen zum Verwenden des Steuerelements XmlFormView Überlegungen zum Verwenden des Steuerelements XmlFormView
Schlussbemerkung Schlussbemerkung
Weitere Ressourcen Weitere Ressourcen

Einführung

Microsoft Office InfoPath Forms Services, mitunter auch kurz Forms Services genannt, stellen das ASP.NET-Steuerelement XmlFormView in einer benutzerdefinierten Webseite dar. Webformulare stellen eine voll funktionsfähige Entsprechung von in Microsoft Office InfoPath 2007 erstellten Formularen dar, wobei jedoch die Installation des InfoPath-Clientprodukts auf dem Computer, auf dem das Formular verwendet wird, nicht erforderlich ist. InfoPath Forms Services muss auf dem Server aktiviert sein, entweder als Teil von Microsoft Office SharePoint Server 2007 oder in Microsoft Office Forms Server 2007, damit InfoPath-Formulare im Browser dargestellt werden können. Das Steuerelement XmlFormView ist auf Servern verfügbar, die InfoPath Forms Services ausführen. Dieses Steuerelement wird von Unternehmen genutzt, die die Funktionalität der InfoPath-Formulare in die Webinfrastruktur ihrer Organisation integrieren möchten.

Forms Services ist eine Erweiterung von Microsoft Windows SharePoint Server (WSS) Version 3. Daher werden zum Öffnen, Konfigurieren und Hinzufügen des Steuerelements XmlFormView zu einer neuen Webseite SharePoint-Entwicklerkenntnisse vorausgesetzt, wie beispielsweise das Verwenden von Internet Information Services (IIS) Manager zum Suchen des SharePoint-Websitepfads, das Öffnen der Website in Microsoft Visual Studio 2005 und das Konfigurieren der Webkonfigurationsdatei zum Debuggen.

Im ersten Abschnitt dieses Artikels wird beschrieben, wie die Webseite erstellt und das Steuerelement XmlFormView hinzugefügt wird. Im darauf folgenden Abschnitt wird das Erstellen und Veröffentlichen einer Webformularvorlage erläutert. Im dritten Abschnitt wird beschrieben, wie der Code zum Kontrollieren des Steuerelements XmlFormView geschrieben werden muss. Im vierten Abschnitt wird gezeigt, wie eine benutzerdefinierte Webseite mithilfe eines SharePoint-Features bereitgestellt wird.

Voraussetzungen

  • Microsoft Office InfoPath 2007 (Beta2)

  • Microsoft Office SharePoint Server 2007 (Beta2)

  • Microsoft Visual Studio 2005

 

Erstellen von benutzerdefinierten Webseiten in SharePoint Server 2007

Zum Erstellen einer von Windows SharePoint Services V3 verwalteten benutzerdefinierten Webseite müssen vier Aufgaben durchgeführt werden. In jedem der folgenden Unterabschnitte wird ein Schritt beschrieben, der ausgeführt werden muss, bevor mit dem nächsten Schritt begonnen werden kann. Jeder Schritt in diesem Abschnitt baut auf den vorherigen Schritt auf; daher ist es wichtig, dass Sie die Schritte in der angegebenen Reihenfolge ausführen.

Hinweis Visual Studio 2005 muss auf dem Server installiert sein, auf dem InfoPath Forms Services ausgeführt wird.

Öffnen der SharePoint-Website und Erstellen einer Webseite

  1. Öffnen Sie das Startmenü, klicken Sie auf Verwaltung und anschließend auf Internet Information Services (IIS) Manager.

  2. Klicken Sie auf das Pluszeichen neben ServerName (lokaler Computer), wobei ServerName dem Namen Ihres Servers entspricht, um die Liste der auf dem Server verfügbaren IIS-Dienste zu erweitern.

  3. Klicken Sie auf das Pluszeichen neben Websites, um die Liste der von IIS verwalteten Websites zu erweitern.

  4. Klicken Sie mit der rechten Maustaste auf SharePoint (80), und wählen Sie Properties (Eigenschaften).

  5. Gehen Sie zur Registerkarte ASP.NET des Dialogfelds SharePoint (80) Properties (Eigenschaften von SharePoint (80)), und markieren und kopieren Sie den Text im Feld File location (Speicherort) ohne den Text web.config, der möglicherweise am Ende der Zeichenfolge File location angezeigt wird. Diese Zeichenfolge zeigt normalerweise einen der folgenden Pfade:

    • C:\Inetpub\wwwroot\wss\VirtualDirectories\80

    • C:\Inetpub\wwwroot\wss\VirtualDirectories\GUID

  6. Starten Sie Visual Studio 2005.

  7. Klicken Sie im Menü File (Datei) auf Open (Öffnen), und klicken Sie anschließend auf Web Site (Website).

  8. Klicken Sie auf die Schaltfläche File System (Dateisystem), und fügen Sie den kopierten Dateipfad in das Feld Folder (Ordner) ein, wie in Abbildung 1 gezeigt.

  9. Klicken Sie mit der rechten Maustaste auf den Pfad der Website in Solution Explorer (Projektmappen-Explorer), und wählen Sie New Folder (Neuer Ordner) aus.

  10. Geben Sie einen Namen für den Ordner ein, wie zum Beispiel "MeineSeite".

  11. Klicken Sie mit der rechten Maustaste auf den neuen Ordner, und wählen Sie Add New Item (Neues Element hinzufügen) aus.

  12. Geben Sie einen Namen für das neue Webformular ein, wie zum Beispiel "MeineWebseite", wählen Sie Visual C# als Language (Sprache) aus, und wählen Sie die Option Place Code in separate file (Code in eigener Datei platzieren) aus. Klicken Sie anschließend auf Add (Hinzufügen).

    Öffnen der SharePoint-Website über den Visual Studio 2005-Dateipfad
    Abbildung 1. Öffnen der SharePoint-Website über den Visual Studio 2005-Dateipfad

Festlegen von Seiteneigenschaften und Hinzufügen des Steuerelements XmlFormView

Für benutzerdefiniert Webseiten, die das Steuerelement XmlFormView enthalten, muss der Sitzungsstatus aktiviert sein, und andere Standardoptionen müssen entweder entfernt oder geändert werden. Führen Sie die folgenden Schritte aus, um die Seite zur Aufnahme des Steuerelements XmlFormView einzurichten und das Steuerelement XmlFormView zunächst zur Visual Studio-Toolbox und anschließend zur Webseite hinzuzufügen.

  1. Klicken Sie in den Document Properties (Dokumenteigenschaften) des neuen Webformulars für die Eigenschaft EnableSessionState auf True (Wahr).

  2. Klicken Sie in der unteren linken Ecke auf die Schaltfläche Source (Quelle), um die Seite im Quellmodus anzuzeigen.

  3. Entfernen Sie das standardmäßige Deklarations-Tag Doctype. Dieses Tag beginnt mit <!DOCTYPE html PUBLIC

  4. Ändern Sie das Tag Body, sodass es das folgende Stilattribut enthält:

    style="margin: 0px;overflow:auto;padding=20px"
  5. Ändern Sie das Tag Form, sodass es das folgende enctype-Attribut enthält:

enctype="multipart/form-data"

Hinweis Das Codierungstypattribut enctype ist nur erforderlich, wenn Sie das Steuerelement Dateianlage in einem in das Steuerelement XmlFormView geladenen Formular verwenden möchten. Wenn dieses Attribut nicht richtig festgelegt ist, funktioniert das Steuerelement Dateianlage zwar anscheinend ordnungsgemäß, lädt aber keine Dateien auf den Server, auf dem InfoPath Forms Services ausgeführt wird.

  1. Nach Abschluss dieses Schrittes sollte Ihre Seite dem folgenden Beispiel entsprechen:

<%@ Register Assembly="Microsoft.Office.InfoPath.Server, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" Namespace="Microsoft.Office.InfoPath.Server.Controls" TagPrefix="cc1" %>

<html > <head runat="server"> <title>Untitled Page</title> </head> <body style="margin: 0px;overflow:auto"> <form id="form1" runat="server" enctype="multipart/form-data">

  1. Klicken Sie in der unteren linken Ecke auf die Schaltfläche Design (Entwurf), um die Seite im Entwurfsmodus anzuzeigen.

  2. Erweitern Sie die Toolbox (diese befindet sich normalerweise im linken Bereich von Visual Studio), und fügen Sie das Steuerelement XmlFormView im Abschnitt General (Allgemein) hinzu.

  3. Reduzieren Sie den Abschnitt Standard in der Toolbox, und erweitern Sie den Abschnitt General (Allgemein).

  4. Klicken Sie mit der rechten Maustaste auf eine Stelle unter dem Titel General (Allgemein), und wählen Sie Choose Items (Elemente auswählen) aus.

  5. Wählen Sie auf der Registerkarte .NET Framework Components (.NET Framework-Komponenten) im Dialogfeld Choose Toolbox Items (Toolboxelemente auswählen) das Steuerelement XmlFormView, und klicken Sie auf OK.

    Wenn Sie XmlFormView nicht sehen, können Sie mithilfe der Schaltfläche Browse (Durchsuchen) danach suchen, indem Sie zum Speicherort der Microsoft.Office.InfoPath.Server.dll-Assembly navigieren. Diese befindet sich normalerweise unter laufwerk:\Programme\Microsoft Office Servers\12.0\Bin, wobei laufwerk dem Speicherort entspricht, an dem Microsoft Office SharePoint Server 2007 installiert ist.

  6. Wählen Sie die Microsoft.Office.InfoPath.Server.dll-Assembly, und klicken Sie auf OK.

  7. Wählen Sie im Dialogfeld Choose Toolbox Items (Toolboxelemente auswählen) das Steuerelement XmlFormView, und klicken Sie auf OK.

  8. Ziehen Sie das Steuerelement XmlFormView im Abschnitt General (Allgemein) der Toolbox auf die neue Seite. Ihre neue Seite sollte jetzt dem Beispiel in Abbildung 2 entsprechen.

  9. Speichern Sie das neue Webformular.

    Steuerelement XmlFormView in einer leeren Webseite
    Abbildung 2. Steuerelement XmlFormView in einer leeren Webseite

Konfigurieren von SharePoint und Zurücksetzen von IIS

Legen Sie die Optionen für die SharePoint-Website fest, speichern Sie die Visual Studio-Projektmappe, und setzen Sie den IIS-Dienst zurück, damit Ihre Änderungen in SharePoint erkannt werden.

  • Klicken Sie im Menü Website von Visual Studio auf Start Options (Startoptionen).

  • Klicken Sie im Abschnitt Server auf Use custom server (Benutzerdefinierten Server verwenden).

  • Geben Sie im Feld Basis-URL http://ServerName ein, wobei ServerName dem Namen Ihres Servers entspricht.

  • Klicken Sie auf OK.

  • Klicken Sie im Menü File (Datei) auf Save All (Alle speichern), und legen Sie einen Namen und einen Speicherort für die Projektmappe fest.

  • Klicken Sie im Startmenü auf Alle Programme, klicken Sie anschließend auf Microsoft Visual Studio 2005, Visual Studio-Tools, und öffnen Sie dann ein Microsoft Visual Studio 2005-Eingabeaufforderungsfenster.

  • Geben Sie an der Eingabeaufforderung iisreset ein, und drücken Sie die Eingabetaste.

  • Schließen Sie das Eingabeaufforderungsfenster, wenn die Meldung Internetdienste wurden erfolgreich neu gestartet angezeigt wird.

Debuggen der benutzerdefinierten Webseite

Zum Debuggen der benutzerdefinierten Webseite müssen Sie die Weboptionen der SharePoint-Website ändern, die in der Datei web.config festgelegt sind. Im folgenden Schritt veranlassen Sie, dass dieses Flag der Datei web.config automatisch hinzugefügt wird.

  1. Wählen Sie in Visual Studio 2005 das Steuerelement XmlFormControl1 auf der Seite.

  2. Fügen Sie die aus dem URL kopierte Speicherortangabe XsnLocation in die Eigenschaft XsnLocation des Steuerelements XmlFormControl1 ein.

  3. Speichern Sie die benutzerdefinierte Webseite.

  4. Starten Sie den Debugvorgang mit F5. Klicken Sie auf OK, wenn eine Warnmeldung angezeigt wird, die besagt, dass die Datei web.config nicht für das Debugging konfiguriert wurde. Auf diese Weise wird das Debugflag der Datei web.config automatisch hinzugefügt.

Wenn Ihnen keine Webformularvorlage zur Verfügung steht, um das Steuerelement XmlFormControl1 zu testen, führen Sie die folgenden Schritte aus, um eine einfache Webformularvorlage zu erstellen und zu veröffentlichen.

 

Laden von InfoPath-Webformularvorlagen in das Steuerelement

Ändern Sie die Eigenschaft XsnLocation des Steuerelements XmlFormView1, sodass sie auf eine auf dem Server veröffentlichte Formularvorlage verweist. Beachten Sie, dass es sich dabei um eine Webformularvorlage handeln muss, andernfalls kann das Steuerelement XmlFormView diese nicht verwenden. Außerdem muss sich die Vorlage in derselben Websitesammlung befinden wie das benutzerdefinierte Webformular.

Führen Sie die folgenden Schritte aus, um eine Webformularvorlage zu erstellen und auf einer SharePoint-Website zu veröffentlichen.

Erstellen einer Webformularvorlage

Die einfachste Methode zum Erstellen einer Webformularvorlage besteht darin, eine neue, leere Formularvorlage zu erstellen, die mit InfoPath und InfoPath Forms Services kompatibel ist. Mit InfoPath und InfoPath Forms Services kompatible Formularvorlagen werden als webkompatible Formularvorlagen bezeichnet. Formularvorlagen, die mithilfe von InfoPath Forms Services auf einem Server veröffentlicht wurden, werden als webaktivierte Formularvorlagen oder kurz Webformularvorlagen bezeichnet.

Hinweis Bestimmte Steuerelemente, Strukturen und Datenverbindungen, die in Standardformularvorlagen vorhanden sind, sind in webkompatiblen Formularvorlagen nicht verfügbar. Ausnahmen wie diejenigen hinsichtlich der Design Once-Funktionen von InfoPath 2007 können im Aufgabenbereich Designdetektiv angezeigt werden, wenn die Kompatibilitätseinstellung der Formularvorlage auf InfoPath und InfoPath Forms Services festgelegt ist.

So erstellen Sie die Beispielformularvorlage

  1. Klicken Sie im Menü File (Datei) auf Save (Speichern), und speichern Sie die Formularvorlage auf der lokalen Festplatte.

  2. Klicken Sie im Menü File (Datei) auf Publish (Veröffentlichen).

  3. Wählen Sie im Dialogfeld Publishing Wizard (Veröffentlichen-Assistent) die Option To a SharePoint server with or without InfoPath Forms Services (Auf einem SharePoint-Server mit oder ohne InfoPath Forms Services), und klicken Sie auf Next (Weiter).

  4. Geben Sie den URL des Servers ein, auf dem Office SharePoint Server 2007 ausgeführt wird. Wenn Sie die benutzerdefinierte Webseite in einer Websitesammlung erstellt haben, stellen Sie sicher, dass Sie dies dem URL hinzufügen, wie nachfolgend gezeigt: http://ServerName/websites/beispielwebsite. Die Formularvorlage und die benutzerdefinierte Webseite müssen sich innerhalb derselben Websitesammlung befinden.

  5. Wählen Sie Enable this form to be filled out by using a browser (Ausfüllen dieses Formulars über einen Browser aktivieren), wählen Sie anschließend Document library (Dokumentbibliothek), und klicken Sie dann auf Next (Weiter).

  6. Klicken Sie auf Create a new document library (Neue Dokumentbibliothek erstellen), und klicken Sie auf Next (Weiter).

  7. Geben Sie einen Namen für die neue Dokumentbibliothek ein, und klicken Sie auf Next (Weiter).

  8. Klicken Sie auf Next (Weiter), um das Hinzufügen von Spalten zu der Dokumentbibliothek zu überspringen.

  9. Klicken Sie auf die Schaltfläche Publish (Veröffentlichen).

  10. Wenn die Formularvorlage veröffentlicht ist, klicken Sie im Dialogfeld Publishing Wizard (Veröffentlichen-Assistent) auf Open this form template in the browser (Diese Formularvorlage im Browser öffnen).

  11. Kopieren Sie die Speicherortangabe XsnLocation aus dem URL in der Adressleiste von Microsoft Internet Explorer, beginnend mit "http" bis ".xsn", und schließen Sie dann das Browserfenster.

  12. Klicken Sie im Dialogfeld Publishing Wizard (Veröffentlichen-Assistent) auf Close (Schließen).

 

Programmieren mit dem Steuerelement XmlFormView

Dem Entwickler stehen verschiedene Methoden zur Verfügung, mit denen er das Verhalten des Steuerelements XmlFormView steuern kann. Er kann beispielsweise den Bearbeitungsstatus ändern, die obere und untere Symbolleiste sichtbar bzw. unsichtbar machen, sowie den Speicherort des abgeschlossenen Formulars festlegen. Diese Optionen können durch Deklarationen gesteuert werden oder durch das Festlegen von Eigenschaften in der Benutzeroberfläche von Visual Studio sowie durch einen Programmierschritt. Dieser Abschnitt enthält ein Beispiel zum Ändern der Eigenschaft EditingStatus.

Sie haben ebenfalls die Möglichkeit, Werte von der Webseite an das Steuerelement XmlFormView zu übergeben, oder Werte vom Steuerelement XmlFormView an die Webseite. In diesem Abschnitt finden Sie Beispiele zur programmtechnischen Lösung dieser Aufgaben.

Steuern des Bearbeitungsstatus des Formulars

Wenn Sie verhindern möchten, dass das Formular angezeigt wird, wenn die Webseite geladen wird, legen Sie für die Eigenschaft EditingStatus des Steuerelements XmlFormView den Wert Init fest. Dies führen Sie entweder in den Eigenschaften des Steuerelements XmlFormControl1 oder in dem Tag der Steuerelementinstanz in der Quellseite durch. Dieser Code sollte dem unten aufgeführten Beispiel entsprechen:

<cc1:XmlFormView ID="XmlFormView1" runat="server" XsnLocation="~sitecollection/FormServerTemplates/MyForm.xsn" EditingStatus="Init">

In diesem Steuerelement-Tag wird ~sitecollection als SharePoint-Variable verwendet, die das Bereitstellen der benutzerdefinierten Webseite auf mehreren Websitesammlungen ermöglicht. Wenn Sie die benutzerdefinierte Webseite nicht auf mehreren Websitesammlungen bereitstellen müssen, können Sie einfach den vollqualifizierten URL eingeben. Weitere Informationen zum Bereitstellen einer benutzerdefinierten Webseite auf einer Websitesammlung finden Sie unter Bereitstellen von benutzerdefinierten Webseiten auf SharePoint-Websites, die keine Stamm-SharePoint-Websites sind weiter unten in diesem Artikel.

Ändern Sie die Eigenschaft EditingStatus des Formulars zu Editing (Bearbeiten), nachdem der Benutzer auf der Webseite aktiv geworden ist, beispielsweise, wenn er auf eine Schaltfläche geklickt hat, um die Formularvorlage zu initialisieren und im Steuerelement XmlFormView1 darzustellen, wie im folgenden Beispiel:

protected void Button1_Click(object sender, EventArgs e)
{
    XmlFormView1.EditingStatus = XmlFormView.EditingStatus.Editing;
}

Übergeben eines Werts aus der Webseite an das Formular

Der Code auf der Webseite muss sich in einem geeigneten Ereignishandler befinden, um den Wert eines Felds im InfoPath-Formular entsprechend festlegen zu können. Wenn sich der Code in einem Ereignis des Steuerelements XmlFormView befindet, wie zum Beispiel OnInitialize, kann auf die Daten in dem Formular zugegriffen werden, oder sie können direkt geändert werden, wie im folgenden Beispiel. Wenn sich der Code in einem Ereignishandler eines anderen Steuerelements auf der Seite befindet, wie zum Beispiel der OnClick-Handler einer Schaltfläche, muss der Code vor dem Zugriff auf die Daten des Formulars die DataBind-Methode des Steuerelements XmlFormView aufrufen.

Beachten Sie, dass das OnInitialize-Ereignis immer ausgeführt wird, wenn ein InfoPath-Formular in das Steuerelement XmlFormView geladen wird. Dies geschieht entweder, wenn die Webseite anfänglich geladen wird, wenn für die Eigenschaften XsnLocation oder XmlLocation des Steuerelements XmlFormView festgelegt wird, dass sie auf ein anderes Formular verweisen, oder wenn die Eigenschaft EditingStatus von Init zu Editing geändert wird.

Für die folgenden Schritte ist ein Steuerelement Text Box (Textfeld) erforderlich, das sowohl der Webseite als auch der als Quelle des Steuerelements XmlFormView verwendeten Webformularvorlage hinzugefügt wird.

So übergeben Sie einen Wert aus der Webseite an das Formular

  1. Fügen Sie in der Entwurfsansicht Ihrer Webseite ein Text Box-Steuerelement hinzu. Fügen Sie in der Formularvorlage ein Text Box-Steuerelement zu Ihrem Formular hinzu, und veröffentlichen Sie die Formularvorlage erneut auf der SharePoint-Website.

  2. Wechseln Sie in die Quellcodeansicht Ihrer Webseite, und suchen Sie das Tag für das XmlFormView1-Steuerelement. Dies sollte dem folgenden Beispiel entsprechen:

<cc1:XmlFormView ID="XmlFormView1" runat="server" Height="250px" Width="100%" XsnLocation="https://ServerName/FormLibrary/Forms/template.xsn">

*ServerName* und *FormLibrary* entsprechen dem Namen des Servers, auf dem InfoPath Forms Services ausgeführt wird, und dem Namen Ihrer Formularbibliothek.
  1. Deklarieren Sie den Namen des Ereignishandlers OnInitialize im XmlFormView-Steuerelement-Tag:

<cc1:XmlFormView ID="XmlFormView1" runat="server" Height="250px" Width="100%" XsnLocation="https://ServerName/FormLibrary/Forms/template.xsn" OnInitialize="_xmlFormView1_OnInitialize" />

  1. Klicken Sie mit der rechten Maustaste in das Fenster Quelle der Webseite, und klicken Sie auf View Code (Code anzeigen). Es wird ein neues Codebehind-Fenster geöffnet. Fügen Sie die folgenden using-Anweisungen hinzu:

using System.Xml; using System.Xml.XPath;

  1. Fügen Sie im selben Fenster den Code für den Ereignishandler OnInitialize hinzu:

protected void _xmlFormView1_OnInitialize(object sender, EventArgs e) { XPathNavigator xNavMain = XmlFormView1.XmlForm.MainDataSource.CreateNavigator(); XmlNamespaceManager xNameSpace = new XmlNamespaceManager(new NameTable()); xNameSpace.AddNamespace("my", "https://schemas.microsoft.com/office/infopath/2003/myXSD/2006-04-20T16:26:21"); XPathNavigator fTextBox1 = xNavMain.SelectSingleNode("my:myFields/my:field2", xNameSpace); fTextBox1.SetValue(TextBox1.Text); }

  1. Ersetzen Sie den XML-Namespace aus dem zu ladenden Formular durch den richtigen XML-Namespace, und ändern Sie den XPath des Felds – in diesem Beispiel my:field2 – in den XPath desjenigen Felds Ihres Formulars, das Sie mit den Werten des Textfelds aus der Webseite füllen möchten.

Tipp Sie können jetzt den XPath eines beliebigen Steuerelements in die Zwischenablage kopieren, indem Sie in der InfoPath-Entwurfsbenutzeroberfläche im Aufgabenbereich Data Source (Datenquelle) mit der rechten Maustaste auf das Steuerelement und anschließend auf Copy XPath (XPath kopieren) klicken.

Übergeben eines Werts aus dem Formular an die Webseite

InfoPath 2007 bietet einen neuen Datenadapter zum Übermitteln der durch das Formular generierten XML-Daten an die Hostumgebung. Dies trifft auch auf die benutzerdefinierte Webseite zu. Dieser neue Adapter namens SubmitToHostAdapter besitzt den entsprechenden manifest.xsf-Eintrag:

<xsf:submitToHostAdapter name="Submit" submitAllowed="yes"></xsf:submitToHostAdapter>

So richten Sie einen neuen SubmitToHostAdapter ein

  1. Öffnen Sie eine InfoPath-Formularvorlage im Entwurfsmodus.

  2. Klicken Sie im Menü Tools (Extras) auf Data Connections (Datenverbindungen).

  3. Klicken Sie auf die Schaltfläche Add (Hinzufügen).

  4. Wählen Sie im Dialogfeld Data Connection Wizard (Datenverbindungs-Assistent) die Option Create a new connection to (Neue Verbindung herstellen) aus, klicken Sie auf Submit data (Daten senden) und anschließend auf Next (Weiter).

  5. Wählen Sie To the hosting environment, such as an ASP.NET page or a hosting application (Verbindung mit der Hostumgebung, wie einer ASP.NET-Webseite oder einer Hostanwendung), wie in Abbildung 5 gezeigt, und klicken Sie auf Next (Weiter).

    Übermitteln von Daten an den Host
    Abbildung 5. Übermitteln von Daten an den Host

  6. Geben Sie einen Namen für die neue Datenverbindung ein, und klicken Sie auf Finish (Fertig stellen).

Wenn Sie den neuen Datenübermittlungsadapter erstellt haben, aktivieren Sie das Senden der XML-Daten aus dem Formular an die Hostumgebung. Führen Sie dazu die folgenden Schritte aus:

  1. Klicken Sie im Menü Tools (Extras) auf Submit Options (Optionen zum Absenden).

  2. Aktivieren Sie das Kontrollkästchen Allow users to submit this form (Benutzer dürfen dieses Formular absenden).

  3. Wählen Sie aus dem ersten Dropdownfeld Hosting environment (Hostumgebung) aus, und wählen Sie dann den Namen, den Sie für SubmitToHostAdapter festgelegt haben, im zweiten Dropdownfeld. Dies sollte dem Beispiel in Abbildung 6 entsprechen.

    Auswählen einer Datenverbindung
    Abbildung 6. Auswählen einer Datenverbindung

  4. Klicken Sie auf OK.

  5. Veröffentlichen Sie die Formularvorlage erneut in derselben Formularbibliothek auf dem SharePoint-Server, oder erstellen Sie eine neue Formularbibliothek.

Nachdem Sie die Formularvorlage erneut veröffentlicht haben, müssen Sie auf Ihrer benutzerdefinierten Webseite einen Ereignishandler einrichten. Gehen Sie dazu wie folgt vor:

  • Wechseln Sie in die Quellcodeansicht Ihrer Webseite und suchen Sie das Tag für XmlFormView1. Dies sollte dem folgenden Beispiel entsprechen:

<cc1:XmlFormView ID="XmlFormView1" runat="server" Height="250px" Width="100%" XsnLocation="https://ServerName/FormLibrary/Forms/template.xsn">

*ServerName* und *FormLibrary* entsprechen dem Namen des Servers, auf dem InfoPath Forms Services ausgeführt wird, und dem Namen Ihrer Formularbibliothek.
  • Deklarieren Sie den Namen des Ereignishandlers OnSubmitToHost im XmlFormView-Steuerelement-Tag:

<cc1:XmlFormView ID="XmlFormView1" runat="server" Height="250px" Width="100%" XsnLocation="https://ServerName/FormLibrary/Forms/template.xsn"
OnInitialize="_xmlFormView1_OnInitialize" OnSubmitToHost="_xmlFormView1_OnSubmitToHost" />

  • Klicken Sie mit der rechten Maustaste in das Fenster Source (Quelle) der Webseite, und klicken Sie auf View Code (Code anzeigen). Das Codebehind-Fenster wird geöffnet. Fügen Sie in diesem Fenster den OnSubmitToHost-Code hinzu:

protected void _xmlFormView1_OnSubmitToHost(object sender, EventArgs e) { XPathNavigator xNavMain = XmlFormView1.XmlForm.MainDataSource.CreateNavigator(); XmlNamespaceManager xNameSpace = new XmlNamespaceManager(new NameTable()); xNameSpace.AddNamespace("my", "https://schemas.microsoft.com/office/infopath/2003/myXSD/2006-04-20T16:26:21"); XPathNavigator fTextBox1 = xNavMain.SelectSingleNode("my:myFields/my:field2", xNameSpace); TextBox1.Text = fTextBox1.Value.ToString(); }

Ersetzen Sie den XML-Namespace aus dem zu ladenden Formular durch den richtigen XML-Namespace, und ändern Sie den XPath des Felds – in diesem Beispiel my:field2 – in den XPath desjenigen Felds Ihres Formulars, das Sie mit den Werten des Textfelds aus der Webseite füllen möchten.

Wenn das Formular übermittelt wird, enthält TextBox1 den Wert aus my:field2.

Eine andere Methode zum Übergeben eines Werts aus dem Formular an die Webseite besteht darin, den durch die NotifyHost-Methode im Formularcode ausgelösten OnNotifyHost-Ereignishandler statt dem OnSubmitToHost-Ereignishandler zu verwenden, welcher durch das Absenden des Formulars ausgelöst wird. Beachten Sie, dass die Verwendung des OnNotifyHost-Ereignishandlers zur Folge hat, dass die XML-Daten nicht überprüft werden, bevor die Formulardaten auf der Webseite verfügbar gemacht werden.

 

Bereitstellen von benutzerdefinierten Webseiten auf SharePoint-Websites, die keine Stamm-SharePoint-Websites sind

Wenn Sie eine benutzerdefinierte Website erstellen wie oben beschrieben, kann die .aspx-Seite nur der Stammwebsitesammlung des SharePoint-Servers angehören. Zum Erstellen einer Seite in einer Websitesammlung, die keine Stammwebsitesammlung ist, muss die benutzerdefinierte Webseite als SharePoint-Feature bereitgestellt werden. Ein SharePoint-Feature macht zwei einfache XML-Dateien erforderlich und wird mithilfe des Befehlszeilenprogramms stsadm.exe bereitgestellt. Dieser Vorgang kann auch durch eine Batchdatei automatisiert werden:

  1. Erstellen Sie einen Unterordner im Ordner Features Ihres Servers. Normalerweise befindet sich dieser Ordner unter C:\Programme\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\FEATURES.

  2. Fügen Sie diesem Ordner die benutzerdefinierte .aspx-Seite hinzu.

  3. Erstellen Sie die Dateien Feature.xml und Module.xml auf der Grundlage der im Folgenden gezeigten Beispiele, und fügen Sie sie an diesem Speicherort hinzu.

  4. Stellen Sie das Feature auf SharePoint bereit. Die Befehlszeilensyntax zum Bereitstellen eines Features lautet:

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\bin\stsadm -o installfeature –filename FeatureFolderName\Feature.xml )

  1. Aktivieren Sie das Feature auf einer SharePoint-Websitesammlung. Die Befehlszeilensyntax zum Aktivieren eines Features lautet:

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\bin\stsadm -o activatefeature –filename FeatureFolderName\Feature.xml -url https://ServerName/Sitecollection)

Ersetzen Sie ServerName und SiteCollection durch den Namen Ihres SharePoint-Servers und den Namen der Websitesammlung, auf der das Feature aktiviert werden soll.

Beispiel für eine Feature.xml-Datei

<?xml version="1.0"?>
<Feature Id="8C4DD0CB-5A94-44da-9B7F-E9ED49C2B2DC" Title="Custom Web page"
Description="This simple example feature adds an aspx page with a hosted
XmlFormView control" Version="1.0.0.0" Scope="Web"
xmlns="https://schemas.microsoft.com/sharepoint/">
<ElementManifests>
    <ElementManifest Location="Module.xml"/>
</ElementManifests>
</Feature>

Beispiel für eine Module.xml-Datei

<?xml version="1.0"?>
<elements>
    <module name="file" url="" path="">
        <file url="XmlFormViewPage.aspx" type="ghostable"> </file>
    </module>
</elements>

Ändern Sie den Wert von file url in dem Namen Ihrer .aspx-Seite und führen Sie dann die Befehlszeilen aus wie in den Schritten 4 und 5 dieses Abschnitts beschrieben. Sie können eine Batchdatei erstellen und diese Befehlszeilen nacheinander ausführen.

 

Überlegungen zum Verwenden des Steuerelements XmlFormView

Beim Verwenden des Steuerelements XmlFormView in einer benutzerdefinierten Webseite empfiehlt es sich, folgende Punkte zu beachten. Zunächst kann nur ein XmlFormView-Steuerelement pro Webformular (.aspx-Seite) verwendet werden. Darüber hinaus müssen die Eigenschaften von XsnLocation und XmlLocation des XmlFormView-Steuerelements auf dieselbe Websitesammlung verweisen wie die benutzerdefinierte Webseite. Für die in den oben stehenden Schritten als Beispiel verwendete benutzerdefinierte Website entspricht dies der Stammwebsitesammlung auf dem SharePoint-Server. Schließlich ist InfoPath Forms Services entweder als Teil von Office SharePoint Server 2007 oder von Office Forms Server 2007 erforderlich, um das Formular in dem Steuerelement XmlFormView darzustellen.

 

Schlussbemerkung

Sie können das Steuerelement XmlFormView verwenden, um Benutzern interaktive InfoPath-Formulare in einer benutzerdefinierten Webseite zur Verfügung zu stellen, ohne dass diese die InfoPath 2007-Clientanwendung auf ihren Computern installieren müssen. Das Steuerelement befindet sich auf Servern, die InfoPath Forms Services ausführen. Die verschiedenen Eigenschaften des Steuerelements ermöglichen die nahtlose Integration der InfoPath-Formulare in die bestehende Webinfrastruktur.

 

Weitere Ressourcen

Weitere Informationen zum Programmieren mit InfoPath finden Sie im InfoPath Developer Portal im Microsoft Office Developer Center (in englischer Sprache).