2009-10-22 5 views
1

Mes utilisateurs utilisent Excel pour trouver des listes de bâtiments ad-hoc. Je construis un formulaire InfoPath pour gérer les contrats sur ces bâtiments. Je suis à la recherche d'un moyen de permettre à mes utilisateurs de spécifier les bâtiments dont ils ont besoin dans Excel, et de coller cette liste dans le contrôle Repeating Table du formulaire InfoPath.Est-il possible d'ajouter des données à plusieurs lignes dans une table extensible InfoPath?

La table comporte plusieurs champs; les utilisateurs sélectionnent la colonne ID bâtiment dans leur feuille de calcul, la collez dans le champ ID bâtiment de la table extensible, puis le formulaire InfoPath recherche les informations de bâtiment restantes à partir de la source de données liée au contrôle, en utilisant l'ID bâtiment comme clé. La partie de recherche Table extensible fonctionne actuellement: l'utilisateur peut entrer (en tapant ou en collant à partir d'Excel) un seul identifiant de bâtiment, appuyer sur Tab, et la table recherche le reste de l'information. Ensuite, ils peuvent insérer une nouvelle rangée, et entrer l'ID du second bâtiment, faire mousser, rincer, répéter. C'est bien pour une poignée de bâtiments - mais pas pour des dizaines ou des centaines. Donc, je cherche un moyen de les laisser coller dans une liste, et remplir la table à partir de là.

S'ils ne peuvent pas coller directement dans une table extensible, puis-je les coller dans un contrôle Texte multiligne, puis analyser cela avec une expression XPath? À quoi ressemblerait cette XPath? Une dernière limite: pas de code derrière C# ou VB - nous avons décidé pour le moment que la logistique du déploiement de formulaires avec code-behind est trop importante pour le projet en cours.

Toute aide appréciée ...

Répondre

0

Le seul problème que je vois résultant (principalement en raison du fait que cette solution ne peut pas impliquer codebehind) est le fait qu'il n'y a pas de règles InfoPath vous pouvez utiliser pour ajouter dynamiquement La seule façon de créer des enregistrements supplémentaires dans un tableau extensible est que l'utilisateur appuie manuellement sur l'onglet "Insérer une ligne supplémentaire" en bas de la page. de la table.

Je vous recommande fortement d'utiliser codebehind, afin qu'un utilisateur puisse coller ses données Excel délimitées par des tabulations du presse-papiers dans une boîte; avoir analysé côté serveur; et utilisez ces données avec une routine pour accéder à MainDataSource du formulaire et ajoutez les lignes supplémentaires de cette façon.

+0

Oui, j'avais peur de ça; Je n'ai trouvé aucun moyen d'ajouter des lignes sans que l'utilisateur clique sur un bouton ou utilise codebehind. J'ai trouvé des articles sur l'automatisation du processus de déploiement lorsque les pilotes de code sont utilisés, mais ils semblent assez compliqués. Nous pourrions nous attaquer au prochain projet. En attendant, je pense que je proposerai une alternative, comme sauver la liste d'Excel de l'utilisateur à une source de données comme une liste de SharePoint ou une table de SQL Server, et avoir le formulaire lu de cela. Merci de confirmer! – Val

0

Si vous extrayez les fichiers sources d'infopath, l'un des documents sera le fichier template.xml. Cela contiendra les données pour votre formulaire Infopath. utilisez une macro Excel pour ouvrir le modèle en tant que document XML et ajoutez les données de la feuille de calcul Excel. vous pouvez alors autoriser l'utilisateur à ouvrir le fichier lui-même ou à l'ouvrir pour lui. Juste un moyen de se déplacer sans avoir le codebehind.

+0

Eh bien, je ne vais pas baisser le ton parce que c'est techniquement une solution valable - mais d'un point de vue de la convivialité, c'est totalement irréaliste. Quand je me tourne vers des solutions comme celle-ci, je pense que c'est un signe que je n'utilise pas la bonne technologie. Plutôt que d'emprunter un chemin comme celui-ci, il est temps d'abandonner la fonctionnalité, de trouver une manière complètement différente d'atteindre l'objectif en utilisant la technologie actuelle ou d'implémenter directement la fonctionnalité demandée par l'utilisateur en utilisant une technologie différente. – Val

Questions connexes