Konfigurieren der ListBox-Steuerelemente für eine Website

In diesem Abschnitt wird erläutert, wie Sie ListBox-Steuerelemente für eine Website konfigurieren. Falls Sie ein Windows-Projekt erstellen, informieren Sie sich unter Konfigurieren der ListBox-Steuerelemente für ein Windows-Projekt.

Jetzt können Sie den Click-Ereignishandler für das Button-Steuerelement erstellen und diesem Ereignishandler dann Code hinzufügen. Durch den Ereignishandler werden verschiedene boolesche Werte für die Symbolleisteneigenschaften der CrystalReportViewer-Klasse auf der Grundlage von Werten festgelegt, die Anwender im ListBox-Steuerelement auswählen.

Vor diesem Ereignishandler müssen jedoch zwei Enumerationen erstellt werden: CeWebCRVReportOptions und CeWebCRVToolbarOptions.

Diese Enumerationen stellen eine Liste von Bericht- und Symbolleistenelementen zur Auswahl bereit.

So erstellen Sie die CeWebCRVReportOptions-Enumeration

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Namen der Website, zeigen Sie auf Hinzufügen, und klicken Sie auf Neues Element hinzufügen.

  2. Wählen Sie im Dialogfeld Neues Element hinzufügen in der Ansicht Vorlagen den Eintrag Klasse aus.

  3. Geben Sie im Feld Name den Namen "CeWebCRVReportOptions" ein, und klicken Sie auf Hinzufügen.

<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 werden u.U. aufgefordert, diese Klasse in ein App_Code-Verzeichnis einzufügen. Klicken Sie auf die Schaltfläche Ja.</p></td>
</tr>
</tbody>
</table>
  1. Ändern Sie in der Klassensignatur das Wort "class" in "enum", um die Klasse in eine Enumeration zu konvertieren.

    NoteAnmerkung

    Denken Sie in Visual Basic daran, sowohl die öffnende als auch die schließende Signatur der Klasse in eine Enumeration (enum) zu ändern.

  2. Da Enumerationen keine Konstruktoren besitzen, löschen Sie die in der C#-Version des Codes enthaltene standardmäßige Konstruktormethode.

  3. Geben Sie innerhalb der Enumeration folgende Werte ein:

    Toolbar
    Group_Tree
    Main_Page
    Enable_Separate_Pages
    
    Toolbar,
    Group_Tree,
    Main_Page,
    Enable_Separate_Pages
    
  4. Klicken Sie im Menü Datei auf Alle speichern.

So erstellen Sie die CeWebCRVToolbarOptions-Enumeration

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Namen der Website, zeigen Sie auf Hinzufügen, und klicken Sie auf Neues Element hinzufügen.

  2. Wählen Sie im Dialogfeld Neues Element hinzufügen in der Ansicht Vorlagen den Eintrag Klasse aus.

  3. Geben Sie im Feld NameCeWebCRVToolbarOptions ein, und klicken Sie auf Hinzufügen.

<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 werden u.U. aufgefordert, diese Klasse in ein App_Code-Verzeichnis einzufügen. Klicken Sie auf die Schaltfläche Ja.</p></td>
</tr>
</tbody>
</table>
  1. Ändern Sie in der Klassensignatur das Wort "class" in "enum", um die Klasse in eine Enumeration zu konvertieren.
<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>Denken Sie in Visual Basic daran, sowohl die öffnende als auch die schließende Signatur der Klasse in eine Enumeration (enum) zu ändern.</p></td>
</tr>
</tbody>
</table>
  1. Da Enumerationen keine Konstruktoren besitzen, löschen Sie die in der C#-Version des Codes enthaltene standardmäßige Konstruktormethode.

  2. Geben Sie innerhalb der Enumeration folgende Werte ein:

    Group_Tree_Button
    Export_Button
    Print_Button
    View_List_Button
    Drill_Up_Button
    Page_Navigation_Button
    Go_to_Page_Button
    Search_Button
    Zoom_Button
    Crystal_Logo
    
    Group_Tree_Button,
    Export_Button,
    Print_Button,
    View_List_Button,
    Drill_Up_Button,
    Page_Navigation_Button,
    Go_to_Page_Button,
    Search_Button,
    Zoom_Button,
    Crystal_Logo
    
  3. Klicken Sie im Menü Datei auf Alle speichern.

So füllen Sie die ListBox-Steuerelemente mit Enumerationswerten

Jetzt füllen Sie die ListBox-Steuerelemente mit Enumerationswerten, die die für die CrystalReportViewer-Symbolleiste verfügbaren Eigenschaften darstellen.

  1. Öffnen Sie das Web Form.

  2. Klicken Sie im Menü Ansicht auf Code.

  3. Fügen Sie innerhalb der ConfigureCrystalReports()-Methode einen Not IsPostBack-Bedingungsblock hinzu.

<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>Die ConfigureCrystalReports()-Methode wurde während des <a href="https://msdn.microsoft.com/de-de/library/vs%7ccrystlmn%7c%7e%5chtml%5ctopic168.htm(v=VS.90)">Projekt-Setup</a>s am Anfang dieses Lernprogramms erstellt. Um dieses Lernprogramm erfolgreich abzuschließen, beginnen Sie mit dem <a href="https://msdn.microsoft.com/de-de/library/vs%7ccrystlmn%7c%7e%5chtml%5ctopic168.htm(v=VS.90)">Projekt-Setup</a>.</p></td>
</tr>
</tbody>
</table>

``` vb
If Not IsPostBack Then

End If
```

``` csharp
if (!IsPostBack)
{
}
```
  1. Setzen Sie die DataSource-Eigenschaft des ListBox-Steuerelements listCRVReport innerhalb des Bedingungsblocks auf die Werte der CeWebCRVReportOptions-Enumeration.

    listCRVReport.DataSource = System.Enum.GetValues(GetType(CeWebCRVReportOptions))
    
    listCRVReport.DataSource = System.Enum.GetValues(typeof(CeWebCRVReportOptions));
    
  2. Rufen Sie jetzt die DataBind()-Methode des ListBox-Steuerelements listCRVReport auf, um die Werte an das Steuerelement zu binden.

    listCRVReport.DataBind()
    
    listCRVReport.DataBind();
    
  3. Setzen Sie die DataSource-Eigenschaft des ListBox-Steuerelements listCRVToolbar auf die Werte der CeWebCRVToolbarOptions-Enumeration.

    listCRVToolbar.DataSource = System.Enum.GetValues(GetType(CeWebCRVToolbarOptions))
    
    listCRVToolbar.DataSource = System.Enum.GetValues(typeof(CeWebCRVToolbarOptions));
    
  4. Rufen Sie jetzt die DataBind()-Methode des ListBox-Steuerelements listCRVToolbar auf, um die Werte an das Steuerelement zu binden.

    listCRVToolbar.DataBind()
    
    listCRVToolbar.DataBind();
    
  5. Binden Sie die Datei "Chart.rpt" außerhalb des Not IsPostBack-Bedingungsblocks an die ReportSource-Eigenschaft des CrystalReportViewer-Steuerelements.

Informationen zu Musterberichten finden Sie unter [Verzeichnis "Samples"](https://msdn.microsoft.com/de-de/library/vs%7ccrystlmn%7c%7e%5chtml%5ctopic159.htm\(v=VS.90\)).

``` vb
myCrystalReportViewer.ReportSource = "C:\Programme\Microsoft Visual Studio 9.0/Crystal Reports\Samples\De\Reports\Feature Examples\Chart.rpt"
```

``` csharp
crystalReportViewer.ReportSource = "C:\\Programme\\Microsoft Visual Studio 9.0\\Crystal Reports\\Samples\\De\\Reports\\Feature Examples\\Chart.rpt";
```

So codieren Sie das Button-Steuerelement "redisplay" für eine Website

Jetzt können Sie dem Click-Ereignis des Button-Steuerelements Code hinzufügen. Durch die Click-Methode müssen boolesche Werte für die Bericht- und Symbolleistenelemente der CrystalReportViewer-Klasse festgelegt werden. Sobald ein Element ausgewählt wird, wird der boolesche Wert auf "true" gesetzt und das Bericht- oder Symbolleistenelement angezeigt. Wird eine Eigenschaft nicht ausgewählt, wird der boolesche Wert auf "False" gesetzt und das Bericht- oder Symbolleistenelement nicht angezeigt.

  1. Öffnen Sie das Web Form.

  2. Klicken Sie im Menü Ansicht auf Designer.

  3. Doppelklicken Sie auf das Button-Steuerelement redisplay.

    Die CodeBehind-Klasse des Berichts wird angezeigt. Eine redisplay_Click()-Ereignismethode wurde automatisch generiert.

  4. Rufen Sie innerhalb der redisplay_Click()-Ereignismethode die Selected-Eigenschaft für die einzelnen Elemente in den ListBox-Steuerelementen listCRVReport und listCRVToolbar auf.

Die Selected-Eigenschaft gibt einen booleschen Wert zum Festlegen der Eigenschaften der CrystalReportViewer-Symbolleiste zurück.

<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>Die CrystalReportViewer-Bericht- und -Symbolleistenelemente werden in den Enumerationen CeWebCRVReportOptions und CeWebCRVToolbarOptions auf ihre entsprechenden Werte gesetzt. Die Werte aus der Enumerationsklasse geben eine Zeichenfolge zurück, die in eine Ganzzahl konvertiert werden muss.</p></td>
</tr>
</tbody>
</table>

``` vb
myCrystalReportViewer.HasToggleGroupTreeButton = listCRVToolbar.Items(Convert.ToInt32(CeWebCRVToolbarOptions.Group_Tree_Button)).Selected
myCrystalReportViewer.HasExportButton = listCRVToolbar.Items(Convert.ToInt32(CeWebCRVToolbarOptions.Export_Button)).Selected
myCrystalReportViewer.HasPrintButton = listCRVToolbar.Items(Convert.ToInt32(CeWebCRVToolbarOptions.Print_Button)).Selected
myCrystalReportViewer.HasViewList = listCRVToolbar.Items(Convert.ToInt32(CeWebCRVToolbarOptions.View_List_Button)).Selected
myCrystalReportViewer.HasDrillUpButton = listCRVToolbar.Items(Convert.ToInt32(CeWebCRVToolbarOptions.Drill_Up_Button)).Selected
myCrystalReportViewer.HasPageNavigationButtons = listCRVToolbar.Items(Convert.ToInt32(CeWebCRVToolbarOptions.Page_Navigation_Button)).Selected
myCrystalReportViewer.HasGotoPageButton = listCRVToolbar.Items(Convert.ToInt32(CeWebCRVToolbarOptions.Go_to_Page_Button)).Selected
myCrystalReportViewer.HasSearchButton = listCRVToolbar.Items(Convert.ToInt32(CeWebCRVToolbarOptions.Search_Button)).Selected
myCrystalReportViewer.HasZoomFactorList = listCRVToolbar.Items(Convert.ToInt32(CeWebCRVToolbarOptions.Zoom_Button)).Selected
myCrystalReportViewer.HasCrystalLogo = listCRVToolbar.Items(Convert.ToInt32(CeWebCRVToolbarOptions.Crystal_Logo)).Selected
myCrystalReportViewer.DisplayToolbar = listCRVReport.Items(Convert.ToInt32(CeWebCRVReportOptions.Toolbar)).Selected
myCrystalReportViewer.DisplayGroupTree = listCRVReport.Items(Convert.ToInt32(CeWebCRVReportOptions.Group_Tree)).Selected
myCrystalReportViewer.DisplayPage = listCRVReport.Items(Convert.ToInt32(CeWebCRVReportOptions.Main_Page)).Selected
myCrystalReportViewer.SeparatePages = listCRVReport.Items(Convert.ToInt32(CeWebCRVReportOptions.Enable_Separate_Pages)).Selected
```

``` csharp
crystalReportViewer.HasToggleGroupTreeButton = listCRVToolbar.Items[Convert.ToInt32(CeWebCRVToolbarOptions.Group_Tree_Button)].Selected;
crystalReportViewer.HasExportButton = listCRVToolbar.Items[Convert.ToInt32(CeWebCRVToolbarOptions.Export_Button)].Selected;
crystalReportViewer.HasPrintButton = listCRVToolbar.Items[Convert.ToInt32(CeWebCRVToolbarOptions.Print_Button)].Selected;
crystalReportViewer.HasViewList = listCRVToolbar.Items[Convert.ToInt32(CeWebCRVToolbarOptions.View_List_Button)].Selected;
crystalReportViewer.HasDrillUpButton = listCRVToolbar.Items[Convert.ToInt32(CeWebCRVToolbarOptions.Drill_Up_Button)].Selected;
crystalReportViewer.HasPageNavigationButtons = listCRVToolbar.Items[Convert.ToInt32(CeWebCRVToolbarOptions.Page_Navigation_Button)].Selected;
crystalReportViewer.HasGotoPageButton = listCRVToolbar.Items[Convert.ToInt32(CeWebCRVToolbarOptions.Go_to_Page_Button)].Selected;
crystalReportViewer.HasSearchButton = listCRVToolbar.Items[Convert.ToInt32(CeWebCRVToolbarOptions.Search_Button)].Selected;
crystalReportViewer.HasZoomFactorList = listCRVToolbar.Items[Convert.ToInt32(CeWebCRVToolbarOptions.Zoom_Button)].Selected;
crystalReportViewer.HasCrystalLogo = listCRVToolbar.Items[Convert.ToInt32(CeWebCRVToolbarOptions.Crystal_Logo)].Selected;
crystalReportViewer.DisplayToolbar = listCRVReport.Items[Convert.ToInt32(CeWebCRVReportOptions.Toolbar)].Selected;
crystalReportViewer.DisplayGroupTree = listCRVReport.Items[Convert.ToInt32(CeWebCRVReportOptions.Group_Tree)].Selected;
crystalReportViewer.DisplayPage = listCRVReport.Items[Convert.ToInt32(CeWebCRVReportOptions.Main_Page)].Selected;
crystalReportViewer.SeparatePages = listCRVReport.Items[Convert.ToInt32(CeWebCRVReportOptions.Enable_Separate_Pages)].Selected;
```

So testen Sie das Button-Steuerelement "redisplay"

Sie können das Projekt jetzt erstellen und ausführen, um die CrystalReportViewer-Symbolleiste anzupassen.

  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.

Die ListBox-Steuerelemente listCRVReport und listCRVToolbar zeigen eine vollständige Liste von CrystalReportViewer-Bericht- und -Symbolleistenoptionen an.
  1. Wählen Sie im Listenfeld mit Symbolleistenoptionen "Page_Navigation_Button", "Print_Button" und "Export_Button".

  2. Wählen Sie im Listenfeld mit Berichtoptionen "Toolbar", "Group_Tree" und "Main_Page".

  3. Klicken Sie auf Bericht neu anzeigen.

    Die Seite wird erneut geladen und zeigt ein CrystalReportViewer-Steuerelement mit einer sichtbaren Symbolleiste, Gruppenstruktur und Hauptseite an. Auf der Symbolleiste sind nur die Schaltflächen zur Seitennavigation sowie zum Drucken und Exportieren sichtbar.

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