Utilisation des solutions hors ligne avec le modèle objet InfoPath 2003
Le modèle objet compatible InfoPath 2003 contient la propriété MachineOnlineState de l'objet Application qui permet au code de votre formulaire de vérifier si l'ordinateur de l'utilisateur est connecté au réseau. Le code de formulaire peut effectuer différentes actions en fonction de l'état de la connexion.
Utilisation de la propriété MachineOnlineState
L'exemple qui suit vous présente comment ajouter une logique au code de votre formulaire afin de déterminer comment le formulaire doit être envoyé, en fonction de l'état connecté ou hors connexion de l'ordinateur.
Cet exemple part du principe que vous avez créé un formulaire de rapports de ventes qui contient un champ « période » qui spécifie le mois et l'année concernés par le rapport. Il part également du principe que vous avez défini une connexion de données et la logique d'envoi du rapport lorsque l'utilisateur est connecté.
Ajout d'une connexion de données qui envoie le formulaire en pièce jointe à un message électronique
Créez ou ouvrez un modèle de formulaire InfoPath avec code managé.
Dans InfoPath, en mode Création, cliquez sur Connexions de données dans le menu Outils.
Dans la boîte de dialogue Connexions de données, cliquez sur Ajouter.
Dans l'Assistant Connexion de données, cliquez sur Envoi des données, puis sur Suivant.
Dans la page suivante de l'Assistant, cliquez sur En tant que message électronique, puis cliquez sur Suivant.
Dans la page suivante de l'Assistant, tapez votre adresse électronique dans la zone À.
Dans la zone de texte Objet, effectuez les opérations suivantes pour combiner la période de ventes avec le texte « Rapport de ventes » :
Cliquez sur le bouton Formule en regard de la zone de texte Objet.
Dans la boîte de dialogue Insérer une formule, cliquez sur Insérer une fonction.
Dans la boîte de dialogue Insérer une fonction, cliquez sur Texte dans la liste Catégories, puis double-cliquez sur concat dans la liste Fonctions.
Remplacez la première instance de double-cliquer pour insérer un champ par 'Rapport de ventes : ' (avec des guillemets simples).
Double-cliquez sur la deuxième instance de double-cliquer pour insérer un champ.
Dans la boîte de dialogue Sélectionner un champ ou un groupe, sélectionnez le champ de période.
Supprimez la dernière instance de double-cliquer pour insérer un champ, puis cliquez sur OK.
Dans l'Assistant, cliquez sur Suivant.
Dans la page suivante de l'Assistant, tapez « Envoi par courrier électronique » dans la zone Entrez le nom de cette connexion de données, puis cliquez sur Terminer.
Ajouter une logique d'envoi du formulaire en fonction de l'état de la connexion de l'ordinateur de l'utilisateur
Dans InfoPath, en mode Création, cliquez sur Envoi de formulaires dans le menu Outils.
Dans la boîte de dialogue Envoi de formulaires, cliquez sur Activer les commandes et les boutons d'envoi, puis, dans la zone de texte Envoyer à, sélectionnez Envoi personnalisé à l'aide du code de formulaire.
Activez la case à cocher Modifier le code du formulaire, puis cliquez sur OK.
Ajoutez les deux fonctions qui suivent sous le gestionnaire d'événements OnSubmitRequest :
public void OnlineSubmit(DocReturnEvent e) { // Logic for submitting online goes here. } public void OfflineSubmitX(DocReturnEvent e) { // Access and submit to the e-mail adapter. DataAdaptersCollection myDataAdapters = thisXDocument.DataAdapters; EmailAdapterObject submitAdapter = (EmailAdapterObject) myDataAdapters["E-mail Submit"]; submitAdapter.Submit(); // Notify the user that the form was submitted offline. System.Text.StringBuilder message = new System.Text.StringBuilder(); message.Append("You submitted your Sales Report offline. "); message.Append("Your Sales Report is in your outbox "); message.Append("and will be submitted when you connect to "); message.Append("the network."); thisXDocument.UI.Alert(message.ToString()); // The submission was successful. e.ReturnStatus = true; }
Ajoutez l'instruction if qui suit à la fonction de gestionnaire d'événements OnSubmitRequest.
// Check the computer's connection state. if (thisApplication.MachineOnlineState==XdMachineOnlineState.xdOnline) { OnlineSubmit(e); } else { OfflineSubmit(e); }
Test du code
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le projet, pointez sur Aperçu, puis cliquez sur Par défaut.
Remplissez le formulaire.
Lancez Microsoft Internet Explorer.
Dans Internet Explorer, cliquez sur Travailler hors connexion dans le menu Fichier.
Dans InfoPath, cliquez sur Envoyer. Vous devez voir apparaître un message indiquant que le formulaire va être envoyé en tant que message électronique.
Cliquez sur Envoyer. Vous devez voir apparaître un message indiquant que le formulaire a été envoyé hors connexion.