2009-03-25 6 views
2

Wir haben eine ASP.NET-Anwendung mit einer InfoPath-Formularkomponente, die InfoPath-Formulare mithilfe von InfoPath Forms Server an den Browser sendet. Anstatt die Formulare in SharePoint zu speichern, senden wir die XML-Formulardaten an einen ASP.NET-Webdienst, der die Daten als XML-Datentyp in SQL Server 2005 speichert. Das funktioniert einwandfrei, und wir haben keine Probleme beim Laden der XML-Daten zurück in das InfoPath-Formular.Laden alter XML-Daten in eine neue Version des InfoPath-Formulars

Unser Problem kommt, wenn wir versuchen, alte Daten (von Version 1 des Formulars) in eine neue Version des Formulars (Version 2) zu laden. Diese neue Version des Formulars (V2) hat beispielsweise ein neues Textfeldfeld. Da das V2-Feld in der V1-XML nicht vorhanden ist, sind sie in der V2-Form sichtbar, aber deaktiviert und können nicht gefüllt werden.

Unsere Frage ist, wie laden V1 XML-Daten in V2-Formulare, und haben Sie den Benutzer in der Lage, die Felder, die jetzt in V2 des Formulars vorhanden sind, zu vervollständigen.

Dieses Verhalten ist mit InfoPath Forms Server und in einer Formularbibliothek gespeicherten Formularen möglich. Wenn Sie die Formularvorlage aktualisieren, können Sie alte Formulare in der neuen Vorlage öffnen, die neuen Felder anzeigen und Daten in den neuen Feldern speichern. Wir müssen wissen, wie es programmgesteuert durchgeführt wird, wenn die XML-Formulardaten in SQL Server und nicht in einer Formularbibliothek gespeichert werden.

Antwort

1

Es ist eine Weile her, seit ich etwas InfoPath tat, so entschuldige mich für diese ein wenig vage:

Ein Teil der InfoPath-Vorlage, die nur ein ZIP-Archiv mit einer anderen Erweiterung ziemlich viel ist, wird eine Datei namens "upgrade.xsl". Diese Datei enthält eine oder mehrere XSL-Transformationen, die Dokumente aktualisieren, die auf frühere Schemaversionen abzielen.

Die Frage ist: Warum wird die richtige Umwandlung in einem Szenario (SharePoint/Form Library) und nicht in dem anderen (Web Service) angewendet? Verletzt der zweite Prozess möglicherweise das Tag, das InfoPath verwendet, um die Version des Schemas zu kennen, auf die das Quelldokument abzielt? Ich glaube, das Tag, auf das ich mich beziehe, ist das "? Mso-infoPathSolution" -Tag ("solutionVersion" -Attribut).

Wenn dieses Tag tatsächlich aus dem Dokument entfernt wird (und Sie es nicht einfach verhindern können), müssen Sie möglicherweise die entsprechende XSL-Transformation "manuell" anwenden. Wenn es mehrere Versionen gibt, mit denen Sie zu tun haben, kann es natürlich schwierig sein zu bestimmen, welche Transformation in jedem Fall angewendet werden muss.

+3

Die Upgrade.XSL ist das Element, das wir vermisst haben - dieses muss aufgerufen werden, wenn InfoPath Formulardaten für ein Formular öffnet, das älter als die aktuelle Version ist. Gibt es eine Möglichkeit, dieses XSL über das InfoPath-Objektmodell zu erhalten, anstatt es manuell zu extrahieren und eine Transformation für die alten Daten auszuführen? –

Verwandte Themen