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 den Namen des Parameterfelds "Ort".
- Der Code zum Hinzufügen aktueller Werte zum Parameter "Ort" wird an 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.
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).
<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>
``` vb
Imports System.Collections
```
``` csharp
using System.Collections;
```
- Erstellen Sie am Ende der Klasse eine neue private Methode mit dem Namen SetCurrentValuesForParameterField(), die über zwei Variablen in der Methodensignatur verfügt: ParameterFields und ArrayList.
``` vb
Private Sub SetCurrentValuesForParameterField(ByVal myParameterFields As ParameterFields, ByVal myArrayList As
ArrayList)
End Sub
```
``` csharp
private void SetCurrentValuesForParameterField(ParameterFields parameterFields, 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 , während Sie sich innerhalb der foreach-Schleife befinden, submittedValue 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.
Der Code innerhalb der foreach-Schleife ist jetzt fertig. Setzen Sie den übrigen Code (beginnend mit den folgenden Schritten) hinter die foreach-Schleife.
``` vb
currentParameterValues.Add(myParameterDiscreteValue)
```
``` csharp
currentParameterValues.Add(parameterDiscreteValue);
```
Rufen Sie außerhalb der foreach-Schleife die ParameterField-Instanz aus der ParameterFields-Indexklasse ab, die auf dem Indexeintrag der PARAMETER_FIELD_NAME-Konstanten basiert.
Dim myParameterField As ParameterField = myParameterFields(PARAMETER_FIELD_NAME)ParameterField parameterField = parameterFields[PARAMETER_FIELD_NAME];Übergeben Sie die currentParameterValues-Instanz an die CurrentValues-Eigenschaft der ParameterField-Instanz.
myParameterField.CurrentValues = currentParameterValuesparameterField.CurrentValues = 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 ParameterField-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.
Deklarieren und instantiieren Sie in der ConfigureCrystalReports()-Methode oberhalb der Zeile, durch die der Bericht an das CrystalReportViewer-Steuerelement gebunden wird, 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 unterhalb des Codes zur Bindung des CrystalReportViewer-Steuerelements die ParameterFields-Instanz aus der ParameterFieldInfo-Eigenschaft des CrystalReportViewer-Steuerelements ab.
Dim myParameterFields As ParameterFields = myCrystalReportViewer.ParameterFieldInfoParameterFields parameterFields = crystalReportViewer.ParameterFieldInfo;Rufen Sie die SetCurrentValuesForParameterField()-Methode auf, und übergeben Sie die ParameterFields- und die ArrayList-Instanz.
``` vb
SetCurrentValuesForParameterField(myParameterFields, myArrayList)
```
``` csharp
SetCurrentValuesForParameterField(parameterFields, arrayList);
```
So überprüfen Sie das Laden des Berichts "CustomersByCity"
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.
- Kehren Sie zu Visual Studio zurück, und klicken Sie auf Debuggen beenden, um den Debugmodus zu verlassen.
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.