Freigeben über


Gewusst wie: Protokollieren von Werten in einem Feld für das Debugging

Beim Debuggen einer InfoPath-Formularvorlage ist es häufig sinnvoll, Werte direkt in einem Feld des Formulars zu protokollieren, um im Verlauf einer Sitzung zum Testen des Formulars eine Aufzeichnung der Daten zum Debugging zu erstellen. Nachfolgend wird erklärt, wie Sie ein mehrzeiliges Feld erstellen und anschließend dem Formularcode Hilfsfunktionen hinzufügen können, um das Protokollieren von Daten für das Debugging zu ermöglichen.

So erstellen Sie ein ein mehrzeiliges Textfeld

  1. Fügen Sie dem Formular ein Steuerelement vom Typ Textfeld hinzu, und ändern Sie dessen Größe so, dass mehrere Zeilen angezeigt werden.

  2. Klicken Sie mit der rechten Maustaste auf Textfeldeigenschaften, und aktivieren Sie anschließend auf der Registerkarte Anzeige das Kontrollkästchen Mehrzeilig.

So fügen Sie dem Feld Hilfsfunktionen zum Protokollieren von Informationen für das Debugging hinzu

  1. Klicken Sie auf der Registerkarte Entwicklertools auf Code-Editor, und speichern Sie anschließend nach Aufforderung die Formularvorlage.

  2. Fügen Sie im Code-Editor der öffentlichen Klasse in der Formularcodedatei die folgenden drei Hilfsfunktionen hinzu.

    Wichtig

    Ändern Sie den für die debugFieldXpath-Variable in der AddToDebugField-Funktion festgelegten Wert in den ordnungsgemäßen XPath-Ausdruck für das Feld, das an das in der ersten Prozedur erstellte Steuerelement gebunden ist.

    private void AddToDebugField(string valueToAdd)
    {
        // Update the value of debugFieldXpath to the XPath of the
        // multi-line field where you want to log debug information.
        string debugFieldXpath = "/my:myFields/my:field1";
        string headerLine = "----------------- " + DateTime.Now + 
            " -----------------" + "\r\n";
    
        SetDebugFieldValue(debugFieldXpath, headerLine + valueToAdd + 
            "\r\n" + GetDebugFieldValue(debugFieldXpath));
    }
    
    private string GetDebugFieldValue(string xpath)
    {
        return this.CreateNavigator().SelectSingleNode(xpath, 
            this.NamespaceManager).Value;
    }
    
    private void SetDebugFieldValue(string xpath, string value)
    {
        this.CreateNavigator().SelectSingleNode(xpath, 
            this.NamespaceManager).SetValue(value);
    }
    
    Private Sub AddToDebugField(ByVal valueToAdd As String)
        ' Update the value of debugFieldXpath to the XPath of the 
        ' multi-line field where you want to log debug information.
        Dim debugFieldXpath As String = "/my:myFields/my:field1"
        Dim headerLine As String = "----------------- " _
            & DateTime.Now & " -----------------" & vbCrLf
    
        SetDebugFieldValue(debugFieldXpath, (headerLine & valueToAdd & vbCrLf) _
            & GetDebugFieldValue(debugFieldXpath))
    End Sub
    
    Private Function GetDebugFieldValue(ByVal xpath As String) As String
        Return Me.CreateNavigator().SelectSingleNode(xpath, _
            Me.NamespaceManager).Value
    End Function
    
    Private Sub SetDebugFieldValue(ByVal xpath As String, ByVal value As String)
        Me.CreateNavigator().SelectSingleNode(xpath, _
            Me.NamespaceManager).SetValue(value)
    End Sub
    

    Hinweis

    Fügen Sie bei Verwenden von Visual Basic den Direktiven oben in der Formularcodedatei Imports Microsoft.VisualBasic.Constants hinzu.

So testen Sie die "AddToDebugField"-Funktion

  1. Klicken Sie auf der Registerkarte Entwicklertools auf Loading-Ereignis, und fügen Sie anschließend dem Ereignishandler die folgende Codezeile hinzu.

    AddToDebugField("Form loaded");
    
    AddToDebugField("Form loaded")
    
  2. Klicken Sie auf der Registerkarte Entwicklertools auf View Switched-Ereignis, und fügen Sie anschließend dem Ereignishandler die folgende Codezeile hinzu.

    AddToDebugField("View switched: " + this.CurrentView.ViewInfo.Name);
    
    AddToDebugField("View switched: " & Me.CurrentView.ViewInfo.Name)
    
  3. Klicken Sie auf der Registerkarte Start auf Vorschau.

Im Feld für das Debugging müssen zwei Einträge angezeigt werden: einer zur Angabe, dass das Formular geladen wurde, und ein zweiter zur Angabe des Namens der Ansicht. In diesen Beispielen werden Ereignishandler für Ereignisse verwendet, die beim Öffnen des Formulars erfolgen. Nach Laden des Formulars können Sie jedoch zusätzlich zu beliebigem anderen Code, der im Kontext des Formulars ausgeführt wird, in anderen Ereignishandlern die AddToDebugField-Funktion aufrufen.