Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Sie können jetzt zwei Werte ("Paris" und "Tokyo") im Parameterfeld "Ort" des Berichts "CustomersByCity" festlegen.
Dazu sind einige Codierungsschritte erforderlich, die in folgende Prozesse unterteilt werden können:
- Sie benötigen eine PARAMETER_FIELD_NAME-Konstante für das Parameterfeld "Ort", da dieses mehrfach im Code verwendet wird.
- Der Code zum Hinzufügen aktueller Werte zum Parameter wird normalerweise an zwei verschiedenen Stellen in diesem Lernprogramm verwendet. Dieser Code wird deshalb als separate Hilfsmethode erstellt.
- Innerhalb der ConfigureCrystalReports()-Methode fügen Sie einer ArrayList-Instanz die Parameter "Paris" und "Tokyo" hinzu und übergeben sowohl den Bericht als auch die ArrayList-Instanz zur Verarbeitung an die Hilfsmethode.
Im nächsten Abschnitt erfahren Sie, wie Sie die Standardwerte aus dem Parameterfeld abrufen und diese Werte für ein ListBox-Steuerelement festlegen. Diese Werte werden am Ende des Lernprogramms verwendet, um neue Orte dynamisch auszuwählen und den Bericht auf der Grundlage dieser neu ausgewählten Orte zu filtern.
Weiter zu Erstellen eines ListBox-Steuerelements zur Anzeige von Standardparametern.
So erstellen Sie eine PARAMETER_FIELD_NAME-Konstante
Kehren Sie zur CodeBehind-Klasse dieses Web Forms oder Windows Forms zurück.
Erstellen Sie auf Klassenebene eine neue Zeichenfolgenkonstante mit dem Namen PARAMETER_FIELD_NAME, und setzen Sie deren Wert auf "Ort".
Private Const PARAMETER_FIELD_NAME As String = "City"private const string PARAMETER_FIELD_NAME = "City";
So erstellen Sie eine Hilfsmethode, durch die dem Parameter im Bericht aktuelle Werte hinzugefügt werden
Sie können jetzt die Hilfsmethode erstellen, durch die dem Parameter im Bericht aktuelle Werte hinzugefügt werden.
Kehren Sie zur CodeBehind-Klasse dieses Web Forms oder Windows Forms zurück.
Fügen Sie oberhalb der Klassensignatur am Anfang der Klasse für den System.Collections-Namespace die Deklaration "Imports" [Visual Basic] oder "using" [C#] hinzu (falls der Namespace nicht bereits deklariert wurde).
``` vb
Imports System.Collections
```
``` csharp
using System.Collections;
```
<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>Diese Deklaration wird für den Zugriff auf die ArrayList-Klasse benötigt.</p></td>
</tr>
</tbody>
</table>
- Erstellen Sie am Ende der Klasse eine neue private Methode mit dem Namen SetCurrentValuesForParameterField(), die über zwei Variablen in der Methodensignatur verfügt: ReportDocument und ArrayList.
<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>Falls Sie einen eingebetteten Bericht verwendet haben, übergeben Sie die Klasse des eingebetteten Berichts später in diesem Lernprogramm an den Parameter der ReportDocument-Methode. Wie ist das möglich? Alle in Crystal Reports enthaltenen Klassen eingebetteter Berichte übernehmen die Elemente der ReportDocument-Basisklasse.</p></td>
</tr>
</tbody>
</table>
``` vb
Private Sub SetCurrentValuesForParameterField(ByVal myReportDocument As ReportDocument, ByVal myArrayList As ArrayList)
End Sub
```
``` csharp
private void SetCurrentValuesForParameterField(ReportDocument reportDocument, ArrayList arrayList)
{
}
```
- Deklarieren und instantiieren Sie innerhalb dieser Methode die ParameterValues-Indexklasse als currentParameterValues-Variable.
<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 ParameterValues-Klasse zugegriffen werden kann, fügen Sie am Anfang der CodeBehind-Klasse für den CrystalDecisions.Shared-Namespace die Deklaration "Imports" [Visual Basic] oder "using" [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 currentParameterValues As ParameterValues = New ParameterValues()
```
``` csharp
ParameterValues currentParameterValues = new ParameterValues();
```
- Erstellen Sie eine foreach-Schleife, um alle (als Object-Typ) übergebenen Werte aus der ArrayList-Instanz abzurufen.
<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>In dieser Methode rufen Sie Werte aus der ArrayList ab. Später schreiben Sie Code, durch den der ArrayList Werte hinzugefügt werden.</p></td>
</tr>
</tbody>
</table>
``` vb
For Each submittedValue As Object In myArrayList
Next
```
``` csharp
foreach(object submittedValue in arrayList)
{
}
```
Deklarieren und instantiieren Sie innerhalb der foreach-Schleife die ParameterDiscreteValue-Klasse.
Dim myParameterDiscreteValue As ParameterDiscreteValue = New ParameterDiscreteValue()ParameterDiscreteValue parameterDiscreteValue = new ParameterDiscreteValue();Konvertieren Sie submittedValue, während Sie sich innerhalb der foreach-Schleife befinden, in eine Zeichenfolge, und übergeben Sie sie an die Value-Eigenschaft der ParameterDiscreteValue-Instanz.
myParameterDiscreteValue.Value = submittedValue.ToString()parameterDiscreteValue.Value = submittedValue.ToString();Fügen Sie die ParameterDiscreteValue-Instanz, während Sie sich innerhalb der foreach-Schleife befinden, in die currentParameterValues-Indexklasse ein.
``` vb
currentParameterValues.Add(myParameterDiscreteValue)
```
``` csharp
currentParameterValues.Add(parameterDiscreteValue);
```
Der Code innerhalb der foreach-Schleife ist jetzt fertig. Setzen Sie den übrigen Code (beginnend mit den folgenden Schritten) hinter die foreach-Schleife.
Rufen Sie außerhalb der foreach-Schleife die ParameterFieldDefinitions-Indexklasse ab, die aus der DataDefinition-Eigenschaft der ReportDocument-Instanz stammt.
Dim myParameterFieldDefinitions As ParameterFieldDefinitions = myReportDocument.DataDefinition.ParameterFieldsParameterFieldDefinitions parameterFieldDefinitions = reportDocument.DataDefinition.ParameterFields;Rufen Sie die ParameterFieldDefinition-Instanz aus der ParameterFieldDefinitions-Indexklasse ab, die auf dem Indexeintrag der PARAMETER_FIELD_NAME-Konstanten basiert.
Dim myParameterFieldDefinition As ParameterFieldDefinition = myParameterFieldDefinitions(PARAMETER_FIELD_NAME)ParameterFieldDefinition parameterFieldDefinition = parameterFieldDefinitions[PARAMETER_FIELD_NAME];Übergeben Sie die currentParameterValues-Instanz an die ApplyCurrentValues-Methode der ParameterFieldDefinition-Instanz.
myParameterFieldDefinition.ApplyCurrentValues(currentParameterValues)parameterFieldDefinition.ApplyCurrentValues(currentParameterValues);
So rufen Sie die SetCurrentValuesForParameterField ()-Methode vor dem Binden des Berichts an das CrystalReportViewer-Steuerelement auf
In diesem Verfahren wurde veranschaulicht, wie Sie eine Methode erstellen, durch die aus einer ArrayList-Instanz übergebene Werte abgerufen und als aktuelle Werte in eine ParameterFieldDefinition-Instanz eingefügt werden. Diese Methode muss jetzt aufgerufen werden, bevor der Bericht an das CrystalReportViewer-Steuerelement gebunden wird, damit ersichtlich ist, dass der Bericht über Parametereinstellungen verfügt.
- Geben Sie in der ConfigureCrystalReports()-Methode oberhalb der Zeile, durch die der Bericht an das CrystalReportViewer-Steuerelement gebunden wird, einige Zeilenumbrüche in den Code ein.
Innerhalb dieser Zeilenumbrüche können Sie dann weiteren Code eingeben, durch den der Bericht vor dem Binden an den Viewer geändert wird.
Deklarieren und instantiieren Sie innerhalb der Zeilen eine ArrayList.
Dim myArrayList As ArrayList = New ArrayList()ArrayList arrayList = new ArrayList();Fügen Sie der ArrayList-Instanz die Ortsnamen "Paris" und "Tokyo" als Zeichenfolgen hinzu.
myArrayList.Add("Paris") myArrayList.Add("Tokyo")arrayList.Add("Paris"); arrayList.Add("Tokyo");Rufen Sie die SetCurrentValuesForParameterField()-Methode auf, und übergeben Sie die CustomersByCityReport- und die ArrayList-Instanz.
``` vb
SetCurrentValuesForParameterField(customersByCityReport,
myArrayList)
```
``` csharp
SetCurrentValuesForParameterField(customersByCityReport,
arrayList);
```
So überprüfen Sie das Laden des Berichts "CustomersByCity"
Bei der letzten Codezeile in der Methode handelt es sich um Code, durch den der Bericht an das CrystalReportViewer-Steuerelement gebunden wird.
Sie können nun beginnen, Ihr Projekt zu erstellen und auszuführen. Es ist davon auszugehen, dass der Bericht erfolgreich angezeigt wird, da jetzt Code zur Festlegung aktueller Werte im Parameterfeld geschrieben wurde.
Klicken Sie im Menü Erstellen auf Projektmappe erstellen.
Sollten Buildfehler vorhanden sein, beheben Sie diese jetzt bitte.
Klicken Sie im Menü Debuggen auf Debuggen starten.
Der Bericht "CustomersByCity" wird erfolgreich mit den Kunden angezeigt, die in "Paris" und "Tokyo" ansässig sind.
- Kehren Sie zu Visual Studio zurück, und klicken Sie auf Debuggen beenden, um den Debugmodus zu verlassen.