Konfigurieren der Session-Persistenz für eine Website

In diesem Abschnitt erfahren Sie, wie Sie eine Session-Persistenz für Click-Ereignisse des Button-Steuerelements konfigurieren.

Wenn eine Webseite bei einem Click-Ereignis des Button-Steuerelements neu geladen wird, gehen die am CrystalReportViewer-Objektmodell vorgenommenen Änderungen verloren.

So demonstrieren Sie die Nichtbeibehaltung für eine Website

  1. Klicken Sie im Menü Erstellen auf Projektmappe erstellen.

  2. Sollten Buildfehler vorhanden sein, beheben Sie diese jetzt bitte.

  3. Klicken Sie im Menü Debuggen auf Debuggen starten.

  4. Wählen Sie aus dem DropDownList-Steuerelement selectBackColor den Wert "Blue".

  5. Klicken Sie auf Bericht neu anzeigen.

    Die Seite wird neu geladen. Der angezeigte Bericht enthält keine Symbolleiste und weist einen blauen Hintergrund auf.

  6. Geben Sie für die Rahmenstärke "10" ein.

  7. Geben Sie für den Rahmenstil "Double" ein.

  8. Wählen Sie für die Rahmenfarbe "SteelBlue" aus.

  9. Klicken Sie auf Rahmenzeichnen.

Die Seite wird neu geladen. Um den Crystal Reports-Bericht wird ein Rahmen angezeigt, und die Hintergrundfarbe ist nicht mehr blau.
  1. Geben Sie in das TextBox-Steuerelement pageNumber den Wert "3" ein, und klicken Sie dann auf Gehe zu Seite.

    Die Seite wird neu geladen und zeigt Seite 3 des Berichts an. Außerdem weist der Bericht keinen Rahmen mehr auf.

  2. Kehren Sie zu Visual Studio zurück, und klicken Sie auf Debuggen beenden, um den Debugmodus zu verlassen.

So fügen Sie dem drawBorder_Click()-Ereignishandler Session-Zuweisungscode zu

Fügen Sie Ihrer Anwendung Persistenzcode hinzu, damit Änderungen, die innerhalb des CrystalReportViewer-Objektmodells vorgenommen wurden, beim Neuladen der Webseiten beibehalten werden.

Zunächst fügen Sie dem drawBorder_Click()-Ereignishandler, in dem diese Werte erstmalig zugewiesen werden, Persistenzcode für Rahmenwerte hinzu. Dann werden in der ConfigureCrystalReports()-Methode die in Session gespeicherten Werte abgerufen und der entsprechenden Eigenschaft der CrystalReportViewer-Klasse zugewiesen.

  • Fügen Sie im drawBorder_Click()-Ereignishandler direkt nach dem vorhandenen Code vier Session-Zuweisungen für BackColor, BorderColor, BorderStyle und BorderWidth hinzu.
``` vb
Session("myBorderColor") =
myCrystalReportViewer.BorderColor.ToString()
Session("myBorderStyle") = myCrystalReportViewer.BorderStyle
Session("myBorderWidth") = myCrystalReportViewer.BorderWidth
```

``` csharp
Session["borderColor"] =
crystalReportViewer.BorderColor.ToString();
Session["borderStyle"] = crystalReportViewer.BorderStyle;
Session["borderWidth"] = crystalReportViewer.BorderWidth;
```

So fügen Sie der ConfigureCrystalReports()-Methode Code zum Abrufen von Session hinzu

Jetzt können Sie diese Werte in der ConfigureCrystalReports()-Methode aus Session abrufen.

  1. Erstellen Sie am Ende der ConfigureCrystalReports()-Methode einen If-Block, mit dem überprüft wird, ob die Session-Variable BackColor ungleich Null ist.
Falls nicht, rufen Sie innerhalb des If-Blocks die BackColor-Eigenschaft von Session ab und wandeln sie in eine Zeichenfolge um. Übergeben Sie die Zeichenfolge an die FromName()-Methode der Color-Klasse, und weisen Sie der BackColor-Eigenschaft der CrystalReportViewer-Instanz die Color-Instanz zu.

``` vb
If Not IsNothing(Session("myBackColor")) Then
myCrystalReportViewer.BackColor = Color.FromName(CType(Session("myBackColor"), String))
End If
```

``` csharp
if (Session["backColor"] != null)
{
crystalReportViewer.BackColor = Color.FromName((string)Session["backColor"]);
}
```
  1. Erstellen Sie einen zweiten If-Block, mit dem überprüft wird, ob die Session-Variable BorderColor ungleich Null ist. Falls nicht, rufen Sie innerhalb des If-Blocks die BorderColor-Eigenschaft von Session ab und wandeln sie in eine Zeichenfolge um. Übergeben Sie die Zeichenfolge an die FromName()-Methode der Color-Klasse, und weisen Sie der BorderColor-Eigenschaft der CrystalReportViewer-Instanz die Color-Instanz zu.
``` vb
If Not IsNothing(Session("myBorderColor")) Then
myCrystalReportViewer.BorderColor = Color.FromName(CType(Session("myBorderColor"), String))
End If
```

``` csharp
if (Session["borderColor"] != null)
{
crystalReportViewer.BorderColor = Color.FromName((string)Session["borderColor"]);
}
```
  1. Erstellen Sie einen zweiten If-Block, mit dem überprüft wird, ob die Session-Variable BorderStyle ungleich Null ist. Falls nicht, rufen Sie innerhalb des If-Blocks die BorderStyle-Eigenschaft von Session ab und wandeln sie in BorderStyle um.

    myCrystalReportViewer.BorderStyle = CType(Session("myBorderStyle"), BorderStyle)
    
    if (Session["borderStyle"] != null)
    {
    crystalReportViewer.BorderStyle = (BorderStyle)Session["borderStyle"];
    }
    
  2. Erstellen Sie einen vierten If-Block, mit dem überprüft wird, ob die Session-Variable BorderWidth ungleich Null ist. Falls nicht, rufen Sie innerhalb des If-Blocks die BorderWidth-Eigenschaft von Session ab und konvertieren sie in eine ganze Zahl.

    myCrystalReportViewer.BorderWidth = Convert.ToInt32(Session("myBorderWidth"))
    
    if (Session["borderStyle"] != null)
    {
    crystalReportViewer.BorderWidth = Convert.ToInt32(Session["borderStyle"]);
    }
    

So codieren Sie das Button-Steuerelement drawBorder

Im nächsten Verfahren fügen Sie dem Click-Ereignishandler des Button-Steuerelements "redisplay" Session-Persistenz hinzu.

  1. Weisen Sie Session, während Sie sich im redisplay_Click()-Ereignishandler befinden, das aus dem DropDownList-Steuerelement selectBackColor ausgewählte Element zu.

    Session("myBackColor") = selectBackColor.SelectedItem.Text
    
    Session["backColor"] = selectBackColor.SelectedItem.Text;
    
  2. Weisen Sie Session, während Sie sich im drawBorder_Click()-Ereignishandler befinden, die Text-Eigenschaft des TextBox-Steuerelements borderWidth zu.

    Session("myBorderWidth") = borderWidth.Text
    
    Session["borderWidth"] = borderWidth.Text;
    
  3. Weisen Sie Session den ausgewählten Index aus dem DropDownList-Steuerelement selectBorderStylezu.

    Session("myBorderStyle") = selectBorderStyle.SelectedIndex
    
    Session["borderStyle"] = selectBorderStyle.SelectedIndex;
    
  4. Weisen Sie Session das ausgewählte Element aus dem DropDownList-Steuerelement selectBorderColor zu.

    Session("myBorderColor") = selectBorderColor.SelectedItem.Text
    
    Session["borderColor"] = selectBorderColor.SelectedItem.Text;
    

Sie können das Projekt jetzt erstellen und ausführen, um zu überprüfen, ob die an dem Bericht vorgenommenen Änderungen bei Click-Ereignissen des Button-Steuerelements beibehalten werden.