Suchen im Bericht

In diesem Abschnitt erfahren Sie, wie Sie Text in einem Crystal Reports-Bericht suchen, der an das CrystalReportViewer-Steuerelement gebunden ist.

Sie benötigen ein TextBox-Steuerelement zur Eingabe der gewünschten Suchzeichenfolge, ein Button-Steuerelement zum Durchsuchen des Berichts und ein Label-Steuerelement, um den Anwender über Erfolg oder Misserfolg der Suche zu informieren.

So fügen Sie die Steuerelemente TextBox, Button und Label für die Option "Suchen" hinzu

  1. Öffnen Sie das Web Form oder Windows Form in der Entwurfsansicht.

  2. Ziehen Sie ein TextBox-Steuerelement aus der Toolbox in die fünfte Zeile und erste Spalte der Tabelle.

  3. Wählen Sie das TextBox-Steuerelement aus, und verfahren Sie dann im Fenster Eigenschaften wie folgt:

    1. Setzen Sie ID (oder Name) auf "searchText".
    2. Lassen Sie die Text-Eigenschaft leer.
  4. Ziehen Sie ein Button-Steuerelement aus der Toolbox in die fünfte Zeile und zweite Spalte der Tabelle.

  5. Wählen Sie das Button-Steuerelement aus, und verfahren Sie dann im Fenster Eigenschaften wie folgt:

    1. Setzen Sie ID (oder Name) auf "search".
    2. Setzen Sie Text auf "Nach Text suchen".
  6. Ziehen Sie ein Label-Steuerelement aus der Toolbox in die fünfte Zeile und dritte Spalte der Tabelle.

1.  Setzen Sie ID (oder Name) auf "message".
2.  Lassen Sie Text leer.
3.  Setzen Sie ForeColor auf Red.
  1. Erstellen Sie die MessageConstants-Klasse, in der Standardantworten als Zeichenfolgenkonstanten für die Suche gespeichert werden.
<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images\xkh1wxd8.alert_note(de-de,VS.90).gif" alt="Note" class="note" />Anmerkung</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>Anweisungen zum Erstellen dieser Klasse finden Sie unter <a href="https://msdn.microsoft.com/de-de/library/vs%7ccrystlmn%7c%7e%5chtml%5ctopic185.htm(v=VS.90)">Hinzufügen einer Klasse für Fehlermeldungen</a>.</p></td>
</tr>
</tbody>
</table>

So codieren Sie den search_Click()-Ereignishandler für eine Website

Als Nächstes rufen Sie die SearchAndHighlightText()-Methode im Button-Steuerelement "search" auf.

NoteAnmerkung

Die SearchAndHighlightText()-Methode weist bei Websites ein anderes Verhalten auf als bei Windows-Projekten.

Da das Verhalten der Methode zwischen einer Website und einem Windows-Projekt unterschiedlich ist, führen Sie im Folgenden das jeweils für Websites bzw. Windows-Projekte geeignete Verfahren aus.

  1. Doppelklicken Sie auf das Button-Steuerelement search.
Die CodeBehind-Klasse des Berichts wird angezeigt. Ein search\_Click()-Ereignishandler wurde automatisch generiert.
  1. Rufen Sie den in das TextBox-Steuerelement eingegebenen Text ab, und übergeben Sie den Wert dann an die SearchAndHighlightText()-Methode des CrystalReportViewer-Steuerelements. Weisen Sie den Methodenaufruf einer booleschen Variablen zu.
<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images\xkh1wxd8.alert_note(de-de,VS.90).gif" alt="Note" class="note" />Anmerkung</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>Damit auf die SearchDirection-Klasse zugegriffen werden kann, fügen Sie am Anfang der CodeBehind-Klasse für den CrystalDecisions.Shared-Namespace eine der Anweisungen &quot;Imports&quot; [Visual Basic] oder &quot;using&quot; [C#] hinzu. (Sie haben diese Deklaration in <a href="https://msdn.microsoft.com/de-de/library/vs%7ccrystlmn%7c%7e%5chtml%5ctopic168.htm(v=VS.90)">Projekt-Setup</a> hinzugefügt.)</p></td>
</tr>
</tbody>
</table>

``` vb
Dim mySearchResult As Boolean = myCrystalReportViewer.SearchAndHighlightText(searchText.Text, SearchDirection.Forward)
```

``` csharp
bool searchResult = crystalReportViewer.SearchAndHighlightText(searchText.Text, SearchDirection.Forward);
```
  1. Erstellen Sie einen Bedingungsblock, durch den getestet wird, ob die Suche erfolgreich war.

    If Not mySearchResult Then
    
    Else
    
    End If
    
    if(!searchResult)
    {
    }
    else
    {
    }
    
  2. Weisen Sie innerhalb des If-Blocks der Text-Eigenschaft des messageLabel-Steuerelements die MessageConstants.SUCCESS-Konstante zu.

    message.Text = MessageConstants.SUCCESS
    
    message.Text = MessageConstants.SUCCESS;
    
  3. Weisen Sie innerhalb des Else-Blocks der Text-Eigenschaft des Label-Steuerelements message die MessageConstants.FAILURE-Konstante zu.

    message.Text = MessageConstants.FAILURE
    
    message.Text = MessageConstants.FAILURE;
    

So codieren Sie den search_Click()-Ereignishandler für ein Windows-Projekt

Übergehen Sie bei einem Windows-Projekt das folgende Verfahren, und fahren Sie mit dem anschließenden Testverfahren fort.

  1. Doppelklicken Sie auf das Button-Steuerelement search.
Die CodeBehind-Klasse des Berichts wird angezeigt. Ein search\_Click()-Ereignishandler wurde automatisch generiert.
  1. Rufen Sie den in das TextBox-Steuerelement eingegebenen Text ab, und übergeben Sie den Wert dann an die SearchAndHighlightText()-Methode des CrystalReportViewer-Steuerelements. Weisen Sie den Methodenaufruf einer booleschen Variablen zu.
``` vb
Dim mySearchResult As Boolean = myCrystalReportViewer.SearchAndHighlightText(searchText.Text)
```

``` csharp
bool searchResult = crystalReportViewer.SearchAndHighlightText(searchText.Text);
```
  1. Erstellen Sie einen Bedingungsblock, durch den getestet wird, ob die Suche erfolgreich war.

    If mySearchResult Then
    
    Else
    
    End If
    
    if(searchResult)
    {
    }
    else
    {
    }
    
  2. Weisen Sie innerhalb des If-Blocks der Text-Eigenschaft des Label-Steuerelements message die MessageConstants.SUCCESS-Konstante zu.

    message.Text = MessageConstants.SUCCESS
    
    message.Text = MessageConstants.SUCCESS;
    
  3. Weisen Sie innerhalb des Else-Blocks die MessageConstants.FAILURE-Konstante zur Text-Eigenschaft von messageLabel zu.

    message.Text = MessageConstants.FAILURE
    
    message.Text = MessageConstants.FAILURE;
    
  1. Klicken Sie im Menü Erstellen auf Projektmappe erstellen.

  2. Sollten Buildfehler vorhanden sein, beheben Sie diese jetzt bitte.

  3. Klicken Sie im Menü Debuggen auf Debuggen starten.

Der Bericht "Chart" wird mit allen hinzugefügten Steuerelementen angezeigt.
  1. Geben Sie in das TextBox-Steuerelement searchTextChina ein, und klicken Sie auf Suchen.
Die Seite wird neu geladen und enthält jetzt das hervorgehobene Suchergebnis sowie eine Erfolgsmeldung.
  1. Geben Sie in das TextBox-Steuerelement searchTexthello ein, und klicken Sie auf Suchen.
Die Seite wird mit einer Misserfolgsmeldung neu geladen.
  1. Kehren Sie zu Visual Studio zurück, und klicken Sie auf Debuggen beenden, um den Debugmodus zu verlassen.

Die übrigen Anpassungsoptionen sind nur für die Webversion des CrystalReportViewer-Steuerelements verfügbar. Wenn Sie eine Website entwickeln, fahren Sie daher mit Hinzufügen eines Berichtrahmens zu einer Website fort.

Wenn Sie ein Windows-Projekt erstellen, ist das Lernprogramm jetzt beendet.