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.
Im letzten Teil des Lernprogramms geht es um die Anzeige einer vollständigen Liste mit Standardwerten für das Parameterfeld in einem ListBox-Steuerelement sowie um das Neufiltern des Berichtinhalts auf der Grundlage der Auswahlen in diesem ListBox-Steuerelement.
In diesem Abschnitt erfahren Sie, wie Sie das ListBox-Steuerelement mit Standardwerten aus dem Parameterfeld auffüllen.
Anmerkung |
|---|
Beachten Sie, dass Sie bei der Erstellung dieses Berichts zu Beginn des Lernprogramms Standardwerte in Form einer umfangreichen Ortsliste festgelegt haben. |
Es ist erforderlich, ein ListBox-Steuerelement hinzuzufügen und zu konfigurieren und dann eine Hilfsmethode zu erstellen, um das ListBox-Steuerelement mit Werten zu füllen.
So erstellen und konfigurieren Sie ein ListBox-Steuerelement im Formular
- Öffnen Sie das Web Form oder Windows Form.
- Klicken Sie im Menü Ansicht auf Designer.
- Gehen Sie bei Entwicklung einer Website wie folgt vor:
- Klicken Sie auf das CrystalReportViewer-Steuerelement, um es auszuwählen.
- Drücken Sie auf der Tastatur die NACH-LINKS-TASTE, so dass ein blinkender Cursor angezeigt wird, und drücken Sie dann die EINGABETASTE.
- Gehen Sie bei Entwicklung eines Windows-Projekts wie folgt vor:
- Klicken Sie auf das CrystalReportViewer-Steuerelement, um es auszuwählen.
- Setzen Sie Dock im Fenster Eigenschaften auf "Bottom".
- Ändern Sie die Größe des CrystalReportViewer-Steuerelements, so dass oberhalb des Steuerelements genügend Platz für ein ListBox-Steuerelement bleibt.
- Setzen Sie Anchor im Fenster Eigenschaften auf "Top", "Bottom", "Left", "Right".
- Ziehen Sie ein ListBox-Steuerelement aus der Toolbox über das CrystalReportViewer-Steuerelement.
- Klicken Sie auf das ListBox-Steuerelement, um es auszuwählen.
- Führen Sie im Fenster Eigenschaften folgende Schritte aus:
- Setzen Sie ID oder Name auf "defaultParameterValuesList".
- Setzen Sie SelectionMode auf "Multiple" (in einem Windows-Projekt auf "MultiExtended").
- Wählen Sie im Menü Datei die Option Alle speichern.
So erstellen Sie eine Hilfsmethode, durch die Standardwerte aus dem Parameterfeld abgerufen werden
Sie können jetzt eine Hilfsmethode erstellen, durch die Standardwerte aus dem Parameterfeld abgerufen werden.
Öffnen Sie das Web Form oder Windows Form.
Klicken Sie im Menü Ansicht auf Code.
Erstellen Sie am Ende der Klasse eine neue private Methode mit dem Namen GetDefaultValuesFromParameterField(), durch die eine ArrayList-Instanz zurückgegeben wird, wobei ParameterFields an die Methodensignatur übergeben wird.
``` vb
Private Function GetDefaultValuesFromParameterField(ByVal
myParameterFields As ParameterFields) As ArrayList
End Function
```
``` csharp
private ArrayList
GetDefaultValuesFromParameterField(ParameterFields parameterFields)
{
}
```
Rufen Sie 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];Rufen Sie eine ParameterValues-Indexklasse (als defaultParameterValues-Variable) aus der DefaultValues-Eigenschaft der ParameterField-Instanz ab.
Dim defaultParameterValues As ParameterValues = myParameterField.DefaultValuesParameterValues defaultParameterValues = parameterField.DefaultValues;Deklarieren und instantiieren Sie eine ArrayList.
Dim myArrayList As ArrayList = New ArrayList()ArrayList arrayList = new ArrayList();Erstellen Sie eine foreach-Schleife, um die einzelnen ParameterValue-Instanzen aus defaultParameterValues abzurufen.
Erstellen Sie jetzt innerhalb der foreach-Schleife einen geschachtelten Bedingungsblock, der nach diskreten Parameterwerten (und nicht nach Bereichsparameterwerten) sucht. Es gibt zwei Versionen dieses Bedingungsblocks, da die API in höheren Versionen von Crystal Reports für Visual Studio geringfügig geändert wurde. Überprüfen Sie die API (mit Hilfe von IntelliSense), um festzustellen, welche Eigenschaft unter ParameterValue verfügbar ist:
``` vb
For Each myParameterValue As ParameterValue In
defaultParameterValues
Next
```
``` csharp
foreach(ParameterValue parameterValue in defaultParameterValues)
{
}
```
Wenn die verfügbare Eigenschaft IsRange lautet, geben Sie innerhalb der foreach-Schleife folgenden Code ein:
If (Not myParameterValue.IsRange) Then End Ifif(!parameterValue.IsRange) { }Wenn die verfügbare Eigenschaft Kind (DiscreteOrRangeKind, eine Enumeration mit drei Werten: DiscreteValue, RangeValue, DiscreteAndRangeValue) lautet, geben Sie innerhalb der foreach-Schleife stattdessen folgenden Code ein:
If (myParameterValue.Kind = DiscreteOrRangeKind.DiscreteValue) Then End Ifif(parameterValue.Kind == DiscreteOrRangeKind.DiscreteValue) { }Wandeln Sie die ParameterValue-Instanz innerhalb dieses geschachtelten Bedingungsblocks in ihre erweiterte Klasse DiscreteParameterValue um.
Dim myParameterDiscreteValue As ParameterDiscreteValue = CType(myParameterValue, ParameterDiscreteValue)ParameterDiscreteValue parameterDiscreteValue = (ParameterDiscreteValue)parameterValue;Fügen Sie der ParameterDiscreteValue-Instanz ebenfalls innerhalb des geschachtelten Bedingungsblocks die Value-Eigenschaft der (in eine Zeichenfolge konvertierten) ArrayList-Instanz hinzu.
myArrayList.Add(myParameterDiscreteValue.Value.ToString())arrayList.Add(parameterDiscreteValue.Value.ToString());Geben Sie außerhalb des Bedingungsblocks und außerhalb der foreach-Schleife am Ende der Methode die ArrayList-Instanz aus der Methode zurück.
Return myArrayListreturn arrayList;
So binden Sie die von der Methode zurückgegebene ArrayList an das ListBox-Steuerelement in einem Webprojekt
Sie haben die Standardwerte aus dem Parameterfeld abgerufen und sie als ArrayList aus der Methode zurückgegeben. Jetzt binden Sie diese ArrayList an das ListBox-Steuerelement defaultParameterValuesList.
Abhängig davon, ob Sie ein Webprojekt oder ein Windows-Projekt verwenden, weicht Ihr Code geringfügig ab. Entscheiden Sie sich deshalb, ob Sie im Folgenden die Web- oder die Windows-Prozedur ausführen möchten.
Geben Sie in der ConfigureCrystalReports()-Methode direkt nach der Codezeile, durch die die ParameterFields-Instanz abgerufen wird, einige Zeilenumbrüche in den Code ein.
Erstellen Sie innerhalb der Zeilen einen Not IsPostBack-Bedingungsblock.
AnmerkungDer Not IsPostBack-Bedingungsblock wird zum Einkapseln von Code verwendet, der nur beim erstmaligen Laden der Seite ausgeführt werden soll. Steuerelemente werden normalerweise an Datenwerte innerhalb von Not IsPostBack-Bedingungsblöcken gebunden, so dass deren Datenwerte (und eventuell nachfolgende Steuerelementereignisse) während des Neuladens der Seite nicht zurückgesetzt werden.
If Not IsPostBack Then End Ifif(!IsPostBack) { }Legen Sie die DataSource-Eigenschaft des ListBox-Steuerelements defaultParameterValuesList innerhalb des Not IsPostBack-Bedingungsblocks auf die GetDefaultValuesFromParameterField()-Hilfsmethode fest, und übergeben Sie die ParameterFields-Instanz als Methodenparameter.
``` vb
defaultParameterValuesList.DataSource =
GetDefaultValuesFromParameterField(myParameterFields)
```
``` csharp
defaultParameterValuesList.DataSource =
GetDefaultValuesFromParameterField(parameterFields);
```
- Rufen Sie, während Sie sich innerhalb des Not IsPostBack-Bedingungsblocks befinden, die DataBind()-Methode des ListBox-Steuerelements defaultParameterValuesList auf.
``` vb
defaultParameterValuesList.DataBind()
```
``` csharp
defaultParameterValuesList.DataBind();
```
So binden Sie die von der Methode zurückgegebene ArrayList an das ListBox-Steuerelement in einem Windows-Projekt
- Geben Sie in der ConfigureCrystalReports()-Methode direkt nach der Codezeile, durch die die ParameterFields-Instanz abgerufen wird, einige Zeilenumbrüche in den Code ein.
Innerhalb dieser Zeilen können Sie jetzt zusätzlichen Code eingeben, durch den die Datenquelle für das ListBox-Steuerelement defaultParameterValuesList festgelegt wird, sobald die Seite erstmalig geladen wird.
- Legen Sie die DataSource-Eigenschaft des ListBox-Steuerelements defaultParameterValuesList innerhalb der Zeilen auf die GetDefaultValuesFromParameterField()-Hilfsmethode fest, und übergeben Sie die ParameterFields-Instanz als Methodenparameter.
``` vb
defaultParameterValuesList.DataSource =
GetDefaultValuesFromParameterField(myParameterFields)
```
``` csharp
defaultParameterValuesList.DataSource =
GetDefaultValuesFromParameterField(parameterFields);
```
So überprüfen Sie, ob das ListBox-Steuerelement defaultParameterValuesList mit Werten gefüllt wird
Sie können das Projekt jetzt erstellen und ausführen, um zu überprüfen, ob das ListBox-Steuerelement defaultParameterValuesList mit Werten gefüllt wird.
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.
Das ListBox-Steuerelement defaultParameterValuesList enthält eine vollständige Liste von Standardwerten (in diesem Lernprogramm Orte).
- Kehren Sie zu Visual Studio zurück, und klicken Sie auf Debuggen beenden, um den Debugmodus zu verlassen.