Condividi tramite


Procedura: Utilizzare soluzioni non in linea

Nel modello a oggetti di InfoPath è disponibile la proprietà MachineOnlineState della classe Application che consente al codice del modulo di controllare se il computer dell'utente è connesso alla rete. Mediante il controllo del valore della proprietà MachineOnlineState, il codice del modulo può eseguire azioni diverse in base allo stato della connessione.

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.

L'esempio presuppone che sia stato creato un modulo per l'invio di un rapporto sulle vendite, contenente un campo denominato periodo che specifica il mese e l'anno oggetto del rapporto, e che inoltre 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

  1. Creare un modello di modulo con codice gestito di InfoPath.

  2. In modalità progettazione di InfoPath scegliere Connessioni dati dal menu Strumenti.

  3. Nella finestra di dialogo Connessioni dati fare clic su Aggiungi.

  4. Nella Connessione guidata dati fare clic su Invio dati e quindi su Avanti.

  5. Nella pagina successiva della procedura guidata fare clic su Come messaggio di posta elettronica e quindi su Avanti.

  6. Nella pagina successiva della procedura guidata digitare il proprio indirizzo di posta elettronica nella casella A.

  7. Nella casella Oggetto eseguire le operazioni seguenti per combinare il periodo delle vendite con il testo Rapporto vendite:

    1. Fare clic sul pulsante Formula accanto alla casella Oggetto.

    2. Nella finestra di dialogo Inserisci formula fare clic su Inserisci funzione.

    3. Nella finestra di dialogo Inserisci funzione fare clic su Testo nell'elenco Categorie e quindi fare doppio clic su concatena nell'elenco Funzioni.

    4. Sostituire la prima istanza di fare doppio clic per inserire un campo con il testo 'Rapporto vendite:' includendo le virgolette semplici.

    5. Fare doppio clic sulla seconda istanza di fare doppio clic per inserire un campo.

    6. Nella finestra di dialogo Seleziona campo o gruppo selezionare il campo periodo.

    7. Eliminare l'istanza finale di fare doppio clic per inserire un campo e quindi fare clic su OK.

  8. Nella procedura guidata fare clic su Avanti.

  9. Nella pagina successiva della procedura guidata fare clic sul pulsante Formula accanto alla casella Nome allegato, ripetere i passaggi sopra indicati per creare la formula concatena("Rapporto vendite - ", periodo) e quindi fare clic su Avanti.

  10. Nell'ultima pagina della procedura guidata digitare Invio 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

  1. In modalità progettazione di InfoPath scegliere Opzioni invio dal menu Strumenti.

  2. Nella finestra di dialogo Opzioni invio fare clic su Consenti agli utenti di inviare il modulo, selezionare Invio personalizzato utilizzando codice del modulo e fare clic sul pulsante Modifica codice.

  3. Sotto al gestore eventi Submit aggiungere le due funzioni seguenti:

    public void OnlineSubmit(SubmitEventArgs e)
    {
       // Logic for submitting online goes here.
    }
    
    public void OfflineSubmit(SubmitEventArgs e)
    {
       // Access and submit to the e-mail connection.
       DataConnectionCollection myDataConnections =
          this.DataConnections;
       EmailSubmitConnection submitConnection =
          (EmailSubmitConnection)myDataConnections["E-mail Submit"];
       submitConnection.Execute();
    
       // Notify the user that the form was submitted offline.
       System.Text.StringBuilder myMessage = 
          new System.Text.StringBuilder();
       myMessage.Append("You submitted your Sales Report offline. ");
       myMessage.Append("Your Sales Report is in your outbox ");
       myMessage.Append("and will be submitted when you connect to ");
       myMessage.Append("the network.");
        MessageBox.Show(myMessage.ToString());
    
       // The submission was successful.
       e.CancelableArgs.Cancel = false;
    }
    
    Public Sub OnlineSubmit(ByVal e As SubmitEventArgs)
       ' Logic for submitting online goes here.
    End Sub
    
    Public Sub OfflineSubmit(ByVal e As SubmitEventArgs)
       ' Access and submit to the e-mail connection.
       Dim myDataConnections As DataConnectionCollection = _
          Me.DataConnections
       Dim submitConnection As EmailSubmitConnection = _
          DirectCast(myDataConnections("E-mail Submit"), _
          EmailSubmitConnection)
       submitConnection.Execute
    
       ' Notify the user that the form was submitted offline.
       Dim myMessage As System.Text.StringBuilder = _
          New System.Text.StringBuilder()
       myMessage.Append("You submitted your Sales Report offline. ")
       myMessage.Append("Your Sales Report is in your outbox ")
       myMessage.Append("and will be submitted when you connect to ")
       myMessage.Append("the network.")
        MessageBox.Show(myMessage.ToString())
    
       ' The submission was successful.
       e.CancelableArgs.Cancel = False
    End Sub
    
  4. Aggiungere l'istruzione if seguente alla funzione del gestore eventi FormEvents_Submit:

    // Check the computer's connection state.
    if (this.Application.MachineOnlineState == MachineState.Online)
    {
       OnlineSubmit(e);
    }
    else
    {
       OfflineSubmit(e);
    }
    
    ' Check the computer's connection state.
    If (Me.Application.MachineOnlineState = MachineState.Online) Then
       OnlineSubmit(e)
    Else
    {
       OfflineSubmit(e)
    End If
    

Eseguire il test del codice

  1. Scegliere Avvia debug dal menu Debug.

  2. Compilare il modulo.

  3. Avviare Microsoft Internet Explorer.

  4. In Internet Explorer scegliere Non in linea dal menu File.

  5. In InfoPath fare clic su Invia. Verrà visualizzato un messaggio che informa che il modulo verrà inviato come messaggio di posta elettronica.

  6. Fare clic su Invia. Verrà visualizzato un messaggio per avvisare che il modulo è stato inviato in modalità non in linea e che l'invio effettivo verrà eseguito quando l'utente si connetterà alla rete.