Programmgesteuert Bearbeiten Von Infopath-Formular-Felder?
Ich habe ein Formular Bibliothek in meinem share-point-Website. Programmatisch muss ich füllen Sie einige Felder. Kann ich das machen? Wenn einer weiß, bitte geben Sie mir einige Beispiel-code. Zuerst muss ich die abrufen, die infopath-Dokument und dann Brauch ich zum füllen der Felder.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was axel_c gepostet wird, ist ziemlich dang schließen. Hier einige gesäubert und überprüft funktionierende code...
Infopath-Dokument ist nur eine reguläre XML-Datei, deren Struktur entspricht der Datenquellen, die Sie in der Infopath-Formular.
Müssen Sie nur den Zugriff auf die Datei über die SharePoint Objekt Modell, modifizieren es mit standard-Methoden (XmlDocument-API) und dann schreiben Sie es wieder auf der SharePoint-Liste. Sie müssen vorsichtig sein, um die Erhaltung der Struktur und fügen Sie gültige Daten oder Sie werden nicht in der Lage, öffnen Sie das Formular mit Infopath.
Sollten Sie wirklich überprüfen Sie Sie heraus ein Buch über SharePoint, wenn Sie Vorhaben zu tun jede ernsthafte Entwicklung. Infopath ist auch ein Minenfeld.
Objekt-Modell Beispiele: hier, hier und hier. Die lächerlich unvollständig MSDN-Referenz-Dokumentation ist hier.
BEARBEITEN: hier finden Sie einige Beispiel-code. Ich habe nicht getan SharePoint für eine Weile, also ich bin mir nicht sicher, das ist 100% richtig, aber es sollte Ihnen genug, um loszulegen:
Es hängt ein bisschen auf dem verfügbaren Werkzeug-set, Fähigkeiten und genauen Anforderungen.
Es gibt 2 Haupt-Wege, pre Auffüllen der Daten in ein InfoPath-Formular.
Exportieren Sie die relevanten Felder, die als Teil des Formulars publishing-Prozess. Die Felder werden dann die Spalten auf das Dokument /Formular-Bibliothek, von wo aus Sie Bearbeiten können Sie entweder manuell, über einen Workflow oder wo auch immer Ihr benutzerdefinierter code befindet.
Direkt Bearbeiten Sie die form mithilfe von code ähnlich dem, was wurde von Axel_c zuvor. Die große Frage hier ist: was löst dieser code? Ein Ereignis-Empfänger auf das Dokument Bibliothek, eine SharePoint-Designer-Workflow, Visual Studio-workflow etc?
Wenn Sie versuchen, tun dies aus einer SharePoint-Designer-workflow, dann haben Sie einen Blick auf die Workflow Power Pack für SharePoint. Es ermöglicht C# - und VB-code eingebettet werden direkt in den workflow, ohne die Notwendigkeit für komplexe Visual-Studio-Entwicklung. Ein Beispiel, wie man Abfrage-InfoPath-Daten aus einem workflow -finden Sie hier. Wenn Sie einige Kenntnisse zur Entwicklung Sie sollten in der Lage sein, es zu ändern, um Ihre Bedürfnisse anzupassen.
Empfehle ich auch die Website http://www.infopathdev.com, haben Sie sehr gute und aktive Foren. Finden Sie fast immer eine Antwort auf Ihre Frage.
Danke für den Beispielcode, @axel_c und @Jeff Burt
Unten ist nur der gleiche code von Jeff Burt modifiziert, für eine Datei in der Dokumentenmappe, die ich brauchte. Wenn Sie nicht bereits über das Dokument Referenz Setzen, können Sie check out this site, wie zu packen:
http://howtosharepoint.blogspot.com/2010/12/programmatically-create-document-set.html
Auch die codes, öffnen sich die .xml-version der infopath-Formular und nicht die .xsn-Vorlage-version, die Sie vielleicht laufen.
Nochmals vielen Dank an alle...
Hatte ich dieses Problem und es behoben mit Hilfe von Jeff Burt /Axel_c Beiträge.
Ich habe versucht, verwenden Sie die XMLDocument.Speichern([stream]) und SPItem.Datei.SaveBinary([stream]) Methoden zum schreiben eines aktualisierten InfoPath-XML-Datei zurück in eine SharePoint-Bibliothek. Es scheint, dass XMLDocument.Speichern([stream]) schreibt die Datei zurück auf SharePoint mit der falschen Codierung, unabhängig davon, was er sagt, in der XML-Deklaration.
Beim öffnen der aktualisierten InfoPath-Formular ich immer die Fehlermeldung "eine Berechnung in der form noch nicht abgeschlossen..."
Ich geschrieben habe, diese beiden Funktionen zu erhalten und zu aktualisieren und InfoPath-Formular. Nur manipulieren der XML-Code zurückgegeben vom ReadSPFiletoXMLdocument() in der üblichen Art und Weise und senden Sie es zurück zu Ihrem server mit WriteXMLtoSPFile().