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 erfahren Sie, wie Sie die für den Bericht geänderte Sortierreihenfolge mit Session beibehalten. Fügen Sie der ConfigureCrystalReports()-Methode, die beim Einrichten des Projekts (siehe Projekt-Setup) erstellt wurde, Code hinzu. Durch diesen Code wird Session gesucht und die Berichtinstanz sofort neu in Session geladen, sobald ein Anwender die Sortierreihenfolge anpasst.
So fügen Sie der ConfigureCrystalReports()-Methode Code zur Suche von Session hinzu
Erstellen Sie innerhalb der ConfigureCrystalReports()-Methode vor dem vorhandenen Code einen if/else-Bedingungsblock, durch den überprüft wird, ob ein Session-Objekt mit dem Namen hierarchicalGroupingReport vorhanden ist.
Sie können einen beliebigen Bezeichnernamen für dieses Session-Objekt verwenden. Verwenden Sie einen eindeutigen Bezeichner wie den Namen der Berichtinstanz.
If (Session("hierarchicalGroupingReport") Is Nothing) Then Else End Ifif(Session["hierarchicalGroupingReport"] == null) { } else { }Wenn Sie einen eingebetteten Bericht verwenden, verschieben Sie die Codezeile zur Deklaration und Instantiierung des Berichts von ihrer aktuellen Position nach oben in den If-Block.
If (Session("hierarchicalGroupingReport") Is Nothing) Then hierarchicalGroupingReport = New Hierarchical_Grouping() Else End Ifif (Session["hierarchicalGroupingReport"] == null) { hierarchicalGroupingReport = new Hierarchical_Grouping(); } else { }Wenn Sie einen nicht eingebetteten Bericht verwenden, verschieben Sie die beiden Codezeilen zur Deklaration und Instantiierung sowie zum Laden des Bericht aus dem Verzeichnispfad von ihrer aktuellen Position nach oben in den If-Block.
AnmerkungIn diesem Beispiel wird davon ausgegangen, dass Sie Crystal Reports für Visual Studio 2008 verwenden. Wenn Sie eine andere Version verwenden, informieren Sie sich unter Verzeichnis "Samples" nach dem richtigen Pfad zu den Musterberichten.
If (Session("hierarchicalGroupingReport") Is Nothing) Then hierarchicalGroupingReport = New ReportDocument() hierarchicalGroupingReport.Load("C:\Programme\Microsoft Visual Studio 9.0\Crystal Reports\Samples\De\Reports\Feature Examples\Hierarchical Grouping.rpt") Else End Ifif(Session["hierarchicalGroupingReport"] == null) { hierarchicalGroupingReport = new ReportDocument(); hierarchicalGroupingReport.Load("C:\Programme\Microsoft Visual Studio 9.0\Crystal Reports\Samples\De\Reports\Feature Examples\Hierarchical Grouping.rpt"); } else { }Weisen Sie Session innerhalb des If-Blocks den Bericht zu, und verwenden Sie dabei den Namen der Berichtvariablen als Zeichenfolge für den Session-Bezeichner.
``` vb
Session("hierarchicalGroupingReport") = hierarchicalGroupingReport
```
``` csharp
Session["hierarchicalGroupingReport"] = hierarchicalGroupingReport;
```
Der If-Block ist hier zu Ende. Der If-Block wird ausgeführt, wenn der Bericht nicht in Session vorhanden ist. Der Else-Block wird ausgeführt, wenn der Bericht in Session vorhanden ist. Der Else-Block verfolgt den Zweck, den Bericht aus Session in eine Berichtinstanz abzurufen.
- Weisen Sie der Berichtinstanz innerhalb des Else-Blocks den in Session gespeicherten Bericht zu.
``` vb
hierarchicalGroupingReport = CType(Session("hierarchicalGroupingReport"), ReportDocument)
```
``` csharp
hierarchicalGroupingReport = (ReportDocument)Session["hierarchicalGroupingReport"];
```
<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>Da Session nur generische Objekte zurückgibt, muss der Bericht in einen Berichttyp umgewandelt werden. Wandeln Sie das abgerufene Objekt unabhängig davon, ob Sie einen eingebetteten oder nicht eingebetteten Bericht verwenden, in den ReportDocument-Typ um.</p></td>
</tr>
</tbody>
</table>
Durch den verbleibenden Code wird die Berichtinstanz außerhalb und unterhalb des Bedingungsblocks an die ReportSource-Eigenschaft des CrystalReportViewer-Steuerelements gebunden.
Wie bereits beim Projekt-Setup erwähnt (siehe Projekt-Setup), wird die ConfigureCrystalReports()-Methode bei jedem Neuladen der Seite aufgerufen. Folglich wird durch Ihre Abwandlung dieser Methode sichergestellt, dass immer der aktuelle Bericht (neu oder in Session gespeichert) abgerufen und geladen wird. Sie haben jedoch noch keinen Code geschrieben, durch den die Berichtinstanz tatsächlich aktualisiert wird. Im nächsten Abschnitt aktualisieren Sie die Berichtinstanz in Session bei jeder Änderung der Sortierreihenfolge.
So aktualisieren Sie die Berichtinstanz in Session für die sortOrderDescending_Click-Ereignismethode
- Löschen Sie in der sortOrderDescending_Click()-Ereignismethode die letzte Codezeile, durch die das CrystalReportViewer-Steuerelement an den Bericht gebunden wurde.
Es sollten also drei Codezeilen übrig bleiben, durch die die Richtung der Sortierreihenfolge geändert wird.
- Unterhalb der drei Codezeilen zum Ändern der Sortierrichtung weisen Sie Session die hierarchicalGroupingReport-Instanz (mit der neuen Richtung der Sortierreihenfolge) zu. dabei verwenden Sie den gleichen Bezeichner wie in der ConfigureCrystalReports()-Methode.
<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>Am einfachsten lässt sich diese Codezeile einfügen, indem Sie sie aus der ConfigureCrystalReports()-Methode kopieren.</p></td>
</tr>
</tbody>
</table>
``` vb
Session("hierarchicalGroupingReport") = hierarchicalGroupingReport
```
``` csharp
Session["hierarchicalGroupingReport"] = hierarchicalGroupingReport;
```
- Zum Schluss fügen Sie einen Aufruf der ConfigureCrystalReports()-Methode hinzu, durch den die letzte (kurz zuvor aktualisierte) hierarchicalGroupingReport-Instanz aus Session abgerufen und dann an das CrystalReportViewer-Steuerelement gebunden wird.
``` vb
ConfigureCrystalReports()
```
``` csharp
ConfigureCrystalReports();
```
Anschließend können Sie diese Schritte für die zweite Ereignismethode wiederholen.
So aktualisieren Sie die Berichtinstanz in Session für die sortOrderAscending_Click-Ereignismethode
Löschen Sie in der sortOrderAscending_Click()-Ereignismethode die letzte Codezeile, durch die das CrystalReportViewer-Steuerelement an den Bericht gebunden wurde.
Es sollten also drei Codezeilen übrig bleiben, durch die die Richtung der Sortierreihenfolge geändert wird.
Unterhalb der drei Codezeilen zum Ändern der Sortierrichtung weisen Sie Session die hierarchicalGroupingReport-Instanz (mit der neuen Richtung der Sortierreihenfolge) zu. dabei verwenden Sie den gleichen Bezeichner wie in der ConfigureCrystalReports()-Methode.
Am einfachsten lässt sich diese Codezeile einfügen, indem Sie sie aus der ConfigureCrystalReports()-Methode kopieren.
``` vb
Session("hierarchicalGroupingReport") = hierarchicalGroupingReport
```
``` csharp
Session["hierarchicalGroupingReport"] = hierarchicalGroupingReport;
```
Zum Schluss fügen Sie einen Aufruf der ConfigureCrystalReports()-Methode hinzu, durch den die letzte (kurz zuvor aktualisierte) hierarchicalGroupingReport-Instanz aus Session abgerufen und dann an das CrystalReportViewer-Steuerelement gebunden wird.
ConfigureCrystalReports()ConfigureCrystalReports();
Jetzt können Sie überprüfen, ob die geänderte Sortierreihenfolge beibehalten wurde.