Festlegen von Parametern aus ListBox-Auswahlen

In diesem Abschnitt fügen Sie eine Schaltfläche hinzu, um den Bericht auf der Grundlage der Auswahlen im ListBox-Steuerelement defaultParameterValuesList erneut anzeigen zu lassen. Sie rufen innerhalb der Ereignismethode für diese Schaltfläche dieselbe Methode auf, die beim ersten Laden der Seite aufgerufen wird: SetCurrentValuesForParameterField(). In diesem Fall übergeben Sie anstelle beliebiger Werte ("Paris" und "Tokyo") ausgewählte Werte aus dem ListBox-Steuerelement defaultParameterValuesList.

So erstellen und konfigurieren Sie ein Button-Steuerelement "redisplay" im Formular

  1. Öffnen Sie das Web Form oder Windows Form.
  2. Klicken Sie im Menü Ansicht auf Designer.
  3. Ziehen Sie ein Button-Steuerelement aus der Toolbox rechts neben das ListBox-Steuerelement.
  4. Klicken Sie auf das Button-Steuerelement , um es auszuwählen.
  5. Führen Sie im Fenster Eigenschaften folgende Schritte aus:
  6. Setzen Sie ID (oder Name) auf "redisplay".
  7. Setzen Sie Text auf "Bericht neu anzeigen".

So erstellen Sie die Click-Ereignismethode für das Button-Steuerelement "redisplay" in einem Webprojekt

Sie können jetzt eine Click-Ereignismethode für die Schaltfläche erstellen, durch die die ausgewählten Elemente im ListBox-Steuerelement gesucht und an die SetCurrentValuesForParameterField()-Methode übergeben werden.

Abhängig davon, ob Sie ein Webprojekt oder ein Windows-Projekt erstellen, weicht Ihr Code geringfügig ab. Entscheiden Sie sich deshalb, ob Sie im Folgenden die Web- oder die Windows-Prozedur ausführen möchten.

  1. Doppelklicken Sie auf die Schaltfläche Bericht neu anzeigen.
Sie wechseln zur CodeBehind-Klasse, in der automatisch eine redisplay\_Click()-Ereignismethode generiert wurde.
  1. Fügen Sie oberhalb der Klassensignatur am Anfang der Klasse für den System.Web.UI.WebControls-Namespace die Deklaration "Imports" [Visual Basic] oder "using" [C#] hinzu (falls der Namespace nicht bereits deklariert wurde).
``` vb
Imports System.Web.UI.WebControls
```

``` csharp
using System.Web.UI.WebControls;
```
  1. Deklarieren und instantiieren Sie innerhalb der gerade automatisch erstellten redisplay_Click()-Ereignismethode eine ArrayList.

    Dim myArrayList As ArrayList = New ArrayList()
    
    ArrayList arrayList = new ArrayList();
    
  2. Erstellen Sie eine foreach-Schleife, um die einzelnen ListItem-Instanzen aus der Items-Eigenschaft des ListBox-Steuerelements defaultParameterValuesList abzurufen.

    For Each item As ListItem In defaultParameterValuesList.Items
    
    Next
    
    foreach(ListItem item in defaultParameterValuesList.Items)
    {
    }
    
  3. Erstellen Sie innerhalb der foreach-Schleife einen geschachtelten Bedingungsblock, durch den überprüft wird, ob die Selected-Eigenschaft der aktuellen Item-Instanz auf "True" gesetzt ist.

    If item.Selected Then
    
    End If
    
    if(item.Selected)
    {
    }
    
  4. Fügen Sie der ArrayList-Instanz innerhalb des Bedingungsblocks die Value-Eigenschaft der Item-Instanz hinzu.

    myArrayList.Add(item.Value)
    
    arrayList.Add(item.Value);
    
  5. Binden Sie den Dateiverzeichnispfad des Berichts "CustomersByCity" außerhalb des Bedingungsblocks und außerhalb der foreach-Schleife erneut an die ReportSource-Eigenschaft der CrystalReportViewer-Klasse.

    NoteAnmerkung

    Der unten angezeigte Dateiverzeichnispfad gilt für ein Visual Studio-Projekt. [Projektname] wird durch den Namen der Website ersetzt. [Anwendername] wird durch den Anmeldenamen ersetzt.

    Standardpfad eines Websiteprojekts:

    myCrystalReportViewer.ReportSource = "C:\WebSites\ Projektname\CustomersByCity.rpt"
    
    crystalReportViewer.ReportSource = "C:\\WebSites\\ Projektname\\CustomersByCity.rpt";
    
  6. Rufen Sie die ParameterFields-Instanz aus der ParameterFieldInfo-Eigenschaft des CrystalReportViewer-Steuerelements ab.

    Dim myParameterFields As ParameterFields =
    myCrystalReportViewer.ParameterFieldInfo
    
    ParameterFields parameterFields =
    crystalReportViewer.ParameterFieldInfo;
    
  7. Übergeben Sie die ParameterFields- und ArrayList-Instanz an die SetCurrentValuesForParameterField()-Methode.

    SetCurrentValuesForParameterField(myParameterFields, myArrayList)
    
    SetCurrentValuesForParameterField(parameterFields, arrayList);
    

So erstellen Sie die Click-Ereignismethode für das Button-Steuerelement "redisplay" in einem Windows-Projekt

  1. Doppelklicken Sie auf das Button-Steuerelement "redisplay".
Sie wechseln zur CodeBehind-Klasse, in der automatisch eine redisplay\_Click()-Ereignismethode generiert wurde.
  1. Deklarieren und instantiieren Sie innerhalb der gerade automatisch erstellten redisplay_Click()-Ereignismethode eine ArrayList.

    Dim myArrayList As ArrayList = New ArrayList()
    
    ArrayList arrayList = new ArrayList();
    
  2. Erstellen Sie eine foreach-Schleife, um jedes Element (als Zeichenfolge) aus der SelectedItems-Eigenschaft des ListBox-Steuerelements defaultParameterValuesList abzurufen.

    For Each item As String In defaultParameterValuesList.SelectedItems
    
    Next
    
    foreach(string item in defaultParameterValuesList.SelectedItems)
    {
    }
    
  3. Fügen Sie der ArrayList-Instanz innerhalb der foreach-Schleife eine item-Zeichenfolgeninstanz hinzu.

    myArrayList.Add(item)
    
    arrayList.Add(item);
    
  4. Binden Sie den Dateiverzeichnispfad des Berichts "CustomersByCity" außerhalb der foreach-Schleife erneut an die ReportSource-Eigenschaft der CrystalReportViewer-Klasse.

<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>Der unten angezeigte Dateiverzeichnispfad gilt für ein Visual Studio-Projekt. [Projektname] wird durch den Namen des Windows-Projekts ersetzt. [Anwendername] wird durch den Anmeldenamen ersetzt.</p></td>
</tr>
</tbody>
</table>

Standardpfad eines Windows-Projekts:

``` vb
myCrystalReportViewer.ReportSource = "C:\Dokumente und Einstellungen\Anwendername\Eigene Dateien\Visual Studio\Projects\Projektname\CustomersByCity.rpt"
```

``` csharp
crystalReportViewer.ReportSource = "C:\\Dokumente und Einstellungen\\Anwendername\\Eigene Dateien\\Visual Studio\\Projects\\Projektname\\CustomersByCity.rpt";
```
  1. Rufen Sie die ParameterFields-Instanz aus der ParameterFieldInfo-Eigenschaft des CrystalReportViewer-Steuerelements ab.

    Dim myParameterFields As ParameterFields =
    myCrystalReportViewer.ParameterFieldInfo
    
    ParameterFields parameterFields =
    crystalReportViewer.ParameterFieldInfo;
    
  2. Übergeben Sie die ParameterFields- und ArrayList-Instanz an die SetCurrentValuesForParameterField()-Methode.

``` vb
SetCurrentValuesForParameterField(myParameterFields, myArrayList)
```

``` csharp
SetCurrentValuesForParameterField(parameterFields, arrayList);
```

So überprüfen Sie, ob das ListBox-Steuerelement defaultParameterValuesList mit Werten gefüllt wird

Nachdem die ausgewählten Werte als aktuelle Werte aus dem ListBox-Steuerelement für das Parameterfeld übernommen wurden, kann der Bericht neu angezeigt werden.

Sie können das Projekt jetzt erstellen und ausführen, um zu überprüfen, ob das Parameterfeld erfolgreich zurückgesetzt wurde.

  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.

  4. Halten Sie im ListBox-Steuerelement STRG gedrückt, und klicken Sie auf verschiedene Orte in der Liste, um sie auszuwählen.

  5. Klicken Sie auf die Schaltfläche Bericht neu anzeigen.

Die Seite wird neu geladen und enthält die Datensätze der Kunden, die in den gerade ausgewählten Orten ansässig sind.
  1. Kehren Sie zu Visual Studio zurück, und klicken Sie auf Debuggen beenden, um den Debugmodus zu verlassen.