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.
In diesem Abschnitt fügen Sie Code zur Beibehaltung der im ListBox-Steuerelement ausgewählten Parameter hinzu (dabei wird ein webbasiertes Lernprogramm vorausgesetzt).
So demonstrieren Sie die Nichtbeibehaltung ausgewählter Parameter
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.
Halten Sie im ListBox-Steuerelement beim Klicken die UMSCHALTTASTE gedrückt, um alle Orte in der Liste auszuwählen.
Klicken Sie auf Bericht neu anzeigen.
Die Seite wird neu geladen und enthält daraufhin die Datensätze aller Kunden in sämtlichen Orten. Sie verfügen jetzt über einen umfangreichen Bericht mit zahlreichen Seiten.
- Klicken Sie auf der CrystalReportViewer-Symbolleiste auf Nächste Seite.
Die Liste der ausgewählten Orte wird nicht beibehalten. Seite 2 des Berichts wird nicht angezeigt. Stattdessen sehen Sie erneut die Startparametereinstellungen ("Paris" und "Tokyo").
- Kehren Sie zu Visual Studio zurück, und klicken Sie auf Debuggen beenden, um den Debugmodus zu verlassen.
So fügen Sie der ConfigureCrystalReports()-Methode Persistenzcode hinzu
Sie werden Ihrer Anwendung Persistenzcode hinzufügen, damit Änderungen beim Neuladen der Webseiten beibehalten werden.
Zunächst fügen Sie der ConfigureCrystalReports()-Methode Persistenzcode hinzu, indem Sie dem If Not IsPostBack-Bedingungsblock einen Else-Block hinzufügen. Anschließend legen Sie für jede Bedingung im Bedingungsblock eindeutige Werte für die ArrayList-Instanz fest. Beim Seitenstart legen Sie die Standardwerte ("Paris" und "Tokyo") in der ArrayList-Instanz fest. Beim erneuten Laden der Seite rufen Sie die in Session gespeicherte ArrayList-Instanz ab.
- Schneiden Sie die beiden Codezeilen, durch die "Paris" und "Tokyo" der ArrayList hinzugefügt werden, innerhalb der ConfigureCrystalReports()-Methode aus, und fügen Sie sie am Ende des Not IsPostBack-Bedingungsblocks ein.
Anschließend sollte der Bedingungsblock wie folgt aussehen:
``` vb
If Not IsPostBack Then
defaultParameterValuesList.DataSource =
GetDefaultValuesFromParameterField(myParameterFields)
defaultParameterValuesList.DataBind()
myArrayList.Add("Paris")
myArrayList.Add("Tokyo")
End If
```
``` csharp
if (!IsPostBack)
{
defaultParameterValuesList.DataSource =
GetDefaultValuesFromParameterField(parameterFields);
defaultParameterValuesList.DataBind();
arrayList.Add("Paris");
arrayList.Add("Tokyo");
}
```
- Fügen Sie dem Bedingungsblock eine abschließende Codezeile hinzu, durch die Session die ArrayList-Instanz zugewiesen wird.
<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>Sie können den Variablennamen als Zeichenfolgenbezeichner für die hinzugefügte Session verwenden.</p></td>
</tr>
</tbody>
</table>
``` vb
Session("myArrayList") = myArrayList
```
``` csharp
Session["arrayList"] = arrayList;
```
Fügen Sie dem Not IsPostBack-Bedingungsblock eine Else-Bedingung hinzu.
Rufen Sie innerhalb des Else-Blocks die ArrayList-Instanz aus Session ab, und wandeln Sie sie in ein ArrayList-Objekt um.
myArrayList = Ctype(Session("myArrayList"), ArrayList)arrayList = (ArrayList)Session["arrayList"];
Anschließend sollte der Bedingungsblock wie folgt aussehen:
If Not IsPostBack Then
defaultParameterValuesList.DataSource = GetDefaultValuesFromParameterField(myParameterFields)
defaultParameterValuesList.DataBind()
myArrayList.Add("Paris")
myArrayList.Add("Tokyo")
Session("myArrayList") = myArrayList
Else
myArrayList = Ctype(Session("myArrayList"), ArrayList)
End If
if (!IsPostBack)
{
defaultParameterValuesList.DataSource = GetDefaultValuesFromParameterField(parameterFields);
defaultParameterValuesList.DataBind();
arrayList.Add("Paris");
arrayList.Add("Tokyo");
Session["arrayList"] = arrayList;
}
else
{
arrayList = (ArrayList)Session["arrayList"];
}
Durch diese Änderungen an der ConfigureCrystalReports()-Methode wird sichergestellt, dass die aktuelle ArrayList-Instanz immer verfügbar ist und an die SetCurrentValuesForParameterField()-Methode übergeben werden kann.
Im nächsten Abschnitt nehmen Sie im Code zwei Änderungen am Click-Ereignis des Button-Steuerelements vor:
- Verwenden Sie die erstellte ArrayList, und weisen Sie sie Session zu.
- Ersetzen Sie die beiden letzten Codezeilen (zur Konfiguration und Anzeige des Berichts) durch einen Aufruf der ConfigureCrystalReports()-Methode, um diese Funktionalität für einen allgemeinen Codesatz auszuführen.
So ändern Sie den Code in der Click-Ereignismethode des Button-Steuerelements, damit Session-Persistenz unterstützt wird
Löschen Sie die letzten drei Codezeilen in der Click-Ereignismethode des Button-Steuerelements.
- Die erste zu löschende Codezeile entspricht dem Code, durch den der Verzeichnispfad der Berichtsdatei an die ReportSource-Eigenschaft des CrystalReportViewer-Steuerelements gebunden wird.
- Die zweite zu löschende Codezeile entspricht dem Code, durch den die ParameterFields-Instanz aus der ParameterFieldInfo-Eigenschaft des CrystalReportViewer-Steuerelements abgerufen wird.
- Die dritte zu löschende Codezeile entspricht dem Aufruf der SetCurrentValuesForParameterField()-Methode.
Im nächsten Schritt fügen Sie zwei neue Codezeilen hinzu, um den gelöschten Code zu ersetzen.
Fügen Sie innerhalb der Click-Ereignismethode des Button-Steuerelements direkt außerhalb der foreach-Schleife eine Codezeile hinzu, durch die die ArrayList-Instanz Session zugewiesen wird.
AnmerkungSie können den Variablennamen als Zeichenfolgenbezeichner für die hinzugefügte Session verwenden.
Session("myArrayList") = myArrayListSession["arrayList"] = arrayList;Rufen Sie die ConfigureCrystalReports()-Methode auf.
Dadurch wird die ArrayList-Instanz abgerufen, auf den Bericht angewendet und der Bericht an das CrystalReportViewer-Steuerelement gebunden.
``` vb
ConfigureCrystalReports()
```
``` csharp
ConfigureCrystalReports();
```
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 Parameterfeld erfolgreich zurückgesetzt 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.
Halten Sie im ListBox-Steuerelement beim Klicken die UMSCHALTTASTE gedrückt, um alle Orte in der Liste auszuwählen.
Klicken Sie auf Bericht neu anzeigen.
Die Seite wird neu geladen und enthält daraufhin die Datensätze aller Kunden in sämtlichen Orten. Sie verfügen jetzt über einen umfangreichen Bericht mit zahlreichen Seiten.
Klicken Sie auf der CrystalReportViewer-Symbolleiste auf Nächste Seite.
Die Liste der ausgewählten Orte wird jetzt beibehalten. Seite 2 des Berichts wird angezeigt.
Kehren Sie zu Visual Studio zurück, und klicken Sie auf Debuggen beenden, um den Debugmodus zu verlassen.