Par Programmation De Modifier Des Champs De Formulaire Infopath?
J'ai une bibliothèque de formulaires dans mon point de partage du site. Par programme j'ai besoin de remplir certains champs. Puis-je le faire? Si quelqu'un sais merci de me fournir un exemple de code. D'abord j'ai besoin de récupérer le document infopath et puis j'ai besoin de remplir les champs.
Vous devez vous connecter pour publier un commentaire.
Ce axel_c posté est assez dang proximité. Voici quelques nettoyé et vérifié code de travail...
Le document Infopath est juste un fichier XML dont la structure correspond à des sources de données que vous avez défini dans le formulaire Infopath.
Vous avez juste besoin d'accéder au fichier via le modèle objet SharePoint, de le modifier à l'aide des méthodes standard (XmlDocument API) et puis les écrire de nouveau à la liste SharePoint. Vous devez être attentif à préserver la structure et l'insérer des données valides ou vous ne serez pas en mesure d'ouvrir le formulaire à l'aide d'Infopath.
Vous devriez vraiment vérifier un livre sur SharePoint si vous envisagez de faire tout développement sérieux. Infopath est aussi un champ de mines.
Modèle d'objet exemples d'utilisation: ici, ici et ici. Le ridiculement incomplète MSDN documentation de référence est ici.
MODIFIER: voici un exemple de code. Je n'ai pas fait de SharePoint pour un moment donc je ne suis pas sûr que ce est correct à 100%, mais il devrait vous donner assez pour commencer:
Ça dépend un peu sur vos outils disponibles, les compétences et les exigences exactes.
Il y a 2 façons principales de pré remplissage des données à l'intérieur d'un formulaire InfoPath.
Exporter les champs appropriés dans le cadre de la mise en forme du processus de publication. Les champs deviennent alors des colonnes sur le Document /bibliothèque de Formulaires de l'endroit où vous pouvez les manipuler manuellement, par l'intermédiaire d'un Flux de travail ou partout où votre code personnalisé est situé.
De manipuler directement le formulaire à l'aide d'un code similaire à ce qui a été fourni par Axel_c précédemment. La grande question est: ce qui va déclencher ce code? Un récepteur d'événement sur la Bibliothèque de documents, un Flux de travail SharePoint Designer, Visual Studio flux de travail, etc?
Si vous essayez de le faire à partir d'un flux de travail SharePoint Designer puis un coup d'oeil à la Flux de production de Puissance pour SharePoint. Il permet de C# et VB code pour être incorporé directement dans le flux de travail sans la nécessité pour les complexes de développement Visual Studio. Un exemple de requête InfoPath des données à partir d'un flux de travail peuvent être trouvés ici. Si vous avez quelques compétences en développement, vous devriez être en mesure de la modifier afin de l'adapter à vos besoins.
Je vous recommande également le site http://www.infopathdev.com, ils ont une excellente et forum actif. Vous aurez presque certainement trouver une réponse à votre question, il.
Merci pour l'exemple de code, @axel_c et @Jeff Burt
Ci-dessous est juste le même code de Jeff Burt modification d'un fichier dans l'ensemble de documents dont j'avais besoin. Si vous n'avez pas encore de l'Ensemble de documents de référence, vous pouvez consulter ce site pour savoir comment saisir un:
http://howtosharepoint.blogspot.com/2010/12/programmatically-create-document-set.html
Aussi, les codes ne ouvert le .version xml du formulaire infopath et pas la .xsn version du modèle qui vous pourriez rencontrer.
Merci encore à tout le monde...
J'ai eu ce problème et l'a résolu avec l'aide de Jeff Burt /Axel_c postes.
J'ai essayé d'utiliser le XMLDocument.Enregistrer([stream]) et SPItem.Fichier.SaveBinary([stream]) des méthodes pour écrire une mise à jour InfoPath fichier XML de retour dans une bibliothèque SharePoint. Il semble que XMLDocument.Enregistrer([stream]) écrit le fichier dans SharePoint avec le mauvais encodage, indépendamment de ce qu'il dit dans la déclaration XML.
Lorsque vous essayez d'ouvrir la mise à jour du formulaire InfoPath j'ai gardé l'obtention de l'erreur "d'un calcul dans le formulaire n'a pas été terminée..."
J'ai écrit ces deux fonctions pour obtenir et mettre à jour et de formulaire InfoPath. Juste manipuler le XML retourné à partir de ReadSPFiletoXMLdocument() de la manière habituelle et de l'envoyer à votre serveur à l'aide de WriteXMLtoSPFile().