Procedura: Utilizzare soluzioni non in linea tramite il modello a oggetti di InfoPath 2003
Il modello a oggetti compatibile con InfoPath 2003 include la proprietà MachineOnlineState dell'oggetto Application, che consente al codice del modulo di controllare se il computer dell'utente è connesso alla rete. In base allo stato della connessione, il codice del modulo può eseguire azioni diverse.
Utilizzo della proprietà MachineOnlineState
L'esempio seguente mostra come aggiungere logica al codice del modulo allo scopo di determinare la modalità di invio di un modulo a seconda che il computer sia in linea o meno.
In questo esempio si presuppone che sia stato creato un modulo per l'invio di un rapporto sulle vendite contenente un campo denominato "period" che specifica il mese e l'anno oggetto del rapporto. Si presuppone, inoltre, che siano già state definite una connessione dati e la logica per l'invio del rapporto quando l'utente è in linea.
Aggiungere una connessione dati per l'invio del modulo come allegato di un messaggio di posta elettronica
Creare o aprire un modello di modulo con codice gestito di InfoPath.
In modalità progettazione di InfoPath scegliere Connessioni dati dal menu Strumenti.
Nella finestra di dialogo Connessioni dati fare clic su Aggiungi.
Nella Connessione guidata dati fare clic su Invio dati e quindi su Avanti.
Nella pagina successiva della procedura guidata fare clic su Come messaggio di posta elettronica e quindi su Avanti.
Nella pagina successiva della procedura guidata digitare il proprio indirizzo di posta elettronica nella casella A.
Nella casella Oggetto eseguire le operazioni seguenti per combinare il periodo delle vendite con il testo Rapporto vendite:
Fare clic sul pulsante Formula accanto alla casella Oggetto.
Nella finestra di dialogo Inserisci formula fare clic su Inserisci funzione.
Nella finestra di dialogo Inserisci funzione fare clic su Testo nell'elenco Categorie e quindi fare doppio clic su concatena nell'elenco Funzioni.
Sostituire la prima istanza di fare doppio clic per inserire un campo con il testo 'Rapporto vendite:' includendo le virgolette semplici.
Fare doppio clic sulla seconda istanza di fare doppio clic per inserire un campo.
Nella finestra di dialogo Seleziona campo o gruppo selezionare il campo periodo.
Eliminare l'istanza finale di fare doppio clic per inserire un campo e quindi fare clic su OK.
Nella procedura guidata fare clic su Avanti.
Nella pagina successiva della procedura guidata digitare 'Invio per posta elettronica' nella casella Immettere un nome per la connessione dati e quindi fare clic su Fine.
Aggiungere la logica per l'invio del modulo in base allo stato di connessione del computer di un utente
In modalità progettazione di InfoPath scegliere Invio moduli dal menu Strumenti.
Nella finestra di dialogo Invio moduli fare clic su Consentito tramite comandi e pulsanti, quindi nella casella Modalità invio selezionare Invio personalizzato utilizzando codice del modulo.
Selezionare la casella di controllo Modifica codice modulo e quindi fare clic su OK.
Aggiungere le due funzioni seguenti sotto il gestore eventi 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; }
Aggiungere l'istruzione if seguente alla funzione del gestore eventi OnSubmitRequest.
// Check the computer's connection state. if (thisApplication.MachineOnlineState==XdMachineOnlineState.xdOnline) { OnlineSubmit(e); } else { OfflineSubmit(e); }
Eseguire il test del codice
In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto, scegliere Anteprima e quindi Predefinita.
Compilare il modulo.
Avviare Microsoft Internet Explorer.
In Internet Explorer scegliere Non in linea dal menu File.
In InfoPath fare clic su Invia. Verrà visualizzato un messaggio che informa che il modulo verrà inviato come messaggio di posta elettronica.
Fare clic su Invia. Verrà visualizzato un messaggio per informare che il modulo è stato inviato in modalità non in linea.