Lernprogramm: Beibehalten des ReportDocument-Objektmodells mit Session

In diesem Lernprogramm verwenden Sie das ReportDocument-Objektmodell, um einen Bericht zur Laufzeit programmgesteuert zu ändern. Außerdem erfahren Sie, wie Sie Session verwenden, um diese Änderungen beim Neuladen von Webseiten beizubehalten.

Da Session-Persistenz nur für Webanwendungen erforderlich ist, ist dieses Lernprogramm nicht für Windows-Projekte konzipiert.

NoteAnmerkung

Eine Übersicht zur Persistenz finden Sie unter Welches Persistenzmodell sollte mit Crystal Reports verwendet werden? in den SDK-Grundlagen.

Einführung

Das in diesem Lernprogramm erstellte Projekt basiert auf einem Web Form, das ein CrystalReportViewer-Steuerelement sowie zwei Schaltflächen enthält, durch die die Sortierreihenfolge des Berichts innerhalb des ReportDocument-Objektmodells geändert wird.

Zunächst erstellen Sie das Projekt ohne das Persistenzmodell Session. Sie werden feststellen, dass die geänderte Sortierreihenfolge ohne Anwendung des Persistenzmodells nur bis zum nächsten Klicken auf eine Schaltfläche beibehalten wird.

Anschließend fügen Sie dem Projekt das Persistenzmodell Session hinzu. Die ReportDocument-Instanz wird erstmalig bei der Erstellung und anschließend bei jeder Zustandsänderung der ReportDocument-Instanz in Session eingefügt.

Sobald der Bericht neu angezeigt werden muss, wird die ReportDocument-Instanz aus Session abgerufen und an das CrystalReportViewer-Steuerelement gebunden. Dadurch wird sichergestellt, dass der Anwender bei jeder Anzeige des Berichts die neueste Version der ReportDocument-Instanz sieht.

NoteAnmerkung

In diesem Lernprogramm verwenden Sie Session, da Änderungen am ReportDocument-Objektmodell beibehalten werden sollen. Um nur das im CrystalReportViewer-Steuerelement enthaltene begrenzte Objektmodell zu nutzen, verwenden Sie ausschließlich ViewState.

Sind andere Persistenzmodelle beteiligt, wenn ein ReportDocument-Objekt mit Session beibehalten wird?

Sind andere Persistenzmodelle beteiligt, wenn ein ReportDocument-Objekt mit Session beibehalten wird?

Ja. Um für Objekte Persistenz durchzusetzen, wird in einer ASP.NET-Webanwendung normalerweise Session und für Webserver-Steuerelemente normalerweise ViewState verwendet. Da eine Crystal Reports für Visual Studio-Webanwendung Objekte und Webserver-Steuerelemente für die Interaktion mit Berichten verwendet, wird die Persistenz von Session und ViewState gemeinsam durchgesetzt:

  • Bei Verwendung von Session wird das ReportDocument-Objektmodell, das zur Laufzeit programmgesteuert mit dem Bericht interagiert, beibehalten.
  • Bei Verwendung von ViewState wird das CrystalReportViewer-Steuerelement, das zur Anzeige des Berichts dient, beibehalten. Konkret werden durch ViewState die Anzeigeeigenschaften beibehalten, die auf der CrystalReportViewer-Symbolleiste festgelegt werden. Durch ViewState werden außerdem Ereignisse (wie Zoom und NextPage) beibehalten, die von Symbolleistenschaltflächen ausgelöst werden.

Die mit ViewState durchgesetzte Persistenz wird automatisch verwaltet. Daher umfasst dieses Lernprogramm nur ein Codebeispiel für die Session-Persistenz.

Beispielcode

Dieses Lernprogramm enthält Beispielcode, der sowohl in C# als auch in Visual Basic geschrieben wurde und die fertige Projektversion darstellt. Befolgen Sie die Anweisungen in diesem Lernprogramm, um ein neues Projekt zu erstellen. Sie können aber auch das Beispielcodeprojekt öffnen, wenn Sie mit einer fertigen Version arbeiten möchten.

Die Beispielcodes wurden in Ordnern gespeichert, die nach Sprache und Projekttyp kategorisiert wurden. Die Ordnernamen für jede Beispielcodeversion lauten wie folgt:

  • C#-Website: CS_Web_RDObjMod_Session
  • Visual Basic-Website: VB_Web_RDObjMod_Session

Nähere Angaben zum Speicherort der Ordner mit diesen Beispielen finden Sie unter Verzeichnis mit Beispielcode für Lernprogramme.

In diesem Abschnitt

Siehe auch