Auffüllen der Steuerelemente für Druckoptionen

In diesem Abschnitt füllen Sie das DropDownList- bzw. ComboBox-Steuerelement auf dem Web Form oder Windows Form mit Werten. Hierfür schreiben Sie Code in der CodeBehind-Klasse.

Die meisten Steuerelemente werden problemlos mit den Werten der Druckerenumerationen im CrystalDecisions.Shared-Namespace gefüllt. Eines dieser Steuerelemente, paperSourceList, muss jedoch mit benutzerdefinierten Papierzufuhroptionen gefüllt werden, die auf dem aktuell ausgewählten Drucker basieren. Sie legen also zunächst einen aktuellen Drucker fest und erstellen dann eine Hilfsmethode, die eine ArrayList mit benutzerdefinierten Papierzufuhroptionen dieses Druckers erzeugt.

Weiter zu Abrufen der gewählten Papierzufuhr.

So erstellen Sie die GetPaperSources()-Hilfsmethode

  1. Öffnen Sie das Web Form.

  2. Klicken Sie im Menü Ansicht auf Code.

  3. Erstellen Sie am Anfang der Klasse eine Zeichenfolgenkonstante für den Netzwerkpfad des Druckers.

<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>In diesem Beispiel wird der Druckerpfad &quot;\\NetworkPrintServer2\\Printer15&quot; verwendet.</p></td>
</tr>
</tbody>
</table>

``` vb
Private Const CURRENT_PRINTER As String = "\\NetworkPrintServer2\Printer15"
```

``` csharp
private const string CURRENT_PRINTER = @"\\NetworPrinterServer2\Printer15";
```
  1. Fügen Sie oberhalb der Klasse eine "Imports"[Visual Basic]- oder "using"[C#]-Anweisung für den System.Collections-Namespace hinzu.
``` vb
Imports System.Collections
```

``` csharp
using System.Collections;
```
  1. Erstellen Sie am Ende der Klasse die GetPaperSources()-Hilfsmethode, die eine ArrayList zurückgibt.
``` vb
Private Function GetPaperSources() As ArrayList
End Function
```

``` csharp
private ArrayList GetPaperSources()
{
}
```

Sonstiger in diesem Schritt enthaltener Code wird von der GetPaperSources()-Methode verwendet.
  1. Deklarieren und instantiieren Sie innerhalb der Methode eine ArrayList.

    Dim myArrayList As ArrayList = New ArrayList()
    
    ArrayList arrayList = new ArrayList();
    
  2. Deklarieren und instantiieren Sie die PrinterSettings-Klasse aus dem System.Drawing.Printing-Namespace.

<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>Einige der in diesem Lernprogramm verwendeten Klassen haben sowohl im System.Drawing.Printing-Namespace als auch im CrystalDecisions.Shared-Namespace wiederkehrende Namen. Wenn in diesem Lernprogramm eine Klasse mit wiederkehrendem Namen verwendet wird, steht der vollständige Namespace vor dem Klassennamen, um Unklarheiten bei der Zuordnung des richtigen Namespaces zu vermeiden.</p></td>
</tr>
</tbody>
</table>

``` vb
Dim myPrinterSettings As System.Drawing.Printing.PrinterSettings = New System.Drawing.Printing.PrinterSettings()
```

``` csharp
System.Drawing.Printing.PrinterSettings printerSettings = new System.Drawing.Printing.PrinterSettings();
```
  1. Setzen Sie die PrinterName-Eigenschaft der PrinterSettings-Instanz auf die CURRENT_PRINTER-Zeichenfolgenkonstante.

    myPrinterSettings.PrinterName = CURRENT_PRINTER
    
    printerSettings.PrinterName = CURRENT_PRINTER;
    
  2. Erstellen Sie eine foreach-Schleife, die jede PaperSource-Instanz in der Instanz der PaperSources-Indexklasse durchläuft.

    Dim myPaperSource As System.Drawing.Printing.PaperSource
    For Each myPaperSource As System.Drawing.Printing.PaperSource In myPrinterSettings.PaperSources
    Next
    
    foreach (System.Drawing.Printing.PaperSource paperSource in
    printerSettings.PaperSources)
    {
    }
    
  3. Fügen Sie der ArrayList innerhalb der foreach-Schleife die SourceName-Eigenschaft der PaperSource-Instanz hinzu.

    myArrayList.Add(myPaperSource.SourceName.ToString())
    
    arrayList.Add(paperSource.SourceName.ToString());
    
  4. Lassen Sie die ArrayList außerhalb der foreach-Schleife von der Methode zurückgeben.

    Return myArrayList
    
    return arrayList;
    
  5. Klicken Sie im Menü Datei auf Alle speichern.

So füllen Sie die DropDownList-Steuerelemente mit Werten

Sie füllen jetzt die ersten drei DropDownList-Steuerelemente mit Werten aus Enumerationen im CrystalDecisions.Shared-Namespace. Das vierte DropDownList-Steuerelement wird mit Werten aus der GetPaperSources()-Methode aufgefüllt, die Sie gerade erstellt haben.

  1. Öffnen Sie das Web Form oder Windows Form.

  2. Klicken Sie im Menü Ansicht auf Designer.

  3. Doppelklicken Sie auf einen leeren Bereich des Formulars.

Die Seite wechselt zur Codeansicht und erzeugt eine Page\_Load()-Ereignismethode (für ein Web Form) bzw. eine Form1\_Load()-Ereignismethode (für ein Windows Form).
  1. Wenn Sie eine Website entwickeln, erstellen Sie innerhalb der Page_Load()-Ereignismethode einen Not IsPostBack-Bedingungsblock.

    If Not IsPostBack Then
    End If
    
    if (!IsPostBack)
    {
    }
    
    NoteAnmerkung

    Der Not IsPostBack-Bedingungsblock wird zum Einkapseln von Code verwendet, der nur beim erstmaligen Laden der Seite ausgeführt wird. Steuerelemente werden normalerweise an Datenwerte innerhalb von Not IsPostBack-Bedingungsblöcken gebunden, so dass deren Datenwerte (und eventuell nachfolgende Steuerelementereignisse) während des Neuladens der Seite nicht zurückgesetzt werden.

  2. Die folgenden Codezeilen werden bei Windows-Projekten an einer anderen Stelle eingefügt als bei Websites:

    • In Windows-Projekten sollten die folgenden Codezeilen in den Form_Load-Ereignishandler eingefügt werden.
    • In Websites sollten die folgenden Codezeilen innerhalb des Not IsPostBack-Bedingungsblocks im Page_Load-Ereignishandler geschachtelt werden.
    1. Setzen Sie die DataSource-Eigenschaft der Instanz des paperOrientationList-Steuerelements auf die Werte der PaperOrientation-Enumeration.

      paperOrientationList.DataSource = System.Enum.GetValues(GetType(PaperOrientation))
      
      paperOrientationList.DataSource = System.Enum.GetValues(typeof(PaperOrientation));
      
    2. Setzen Sie die DataSource-Eigenschaft der Instanz des paperSizeList-Steuerelements auf die Werte der PaperSize-Enumeration.

      paperSizeList.DataSource = System.Enum.GetValues(GetType(PaperSize))
      
      paperSizeList.DataSource = System.Enum.GetValues(typeof(PaperSize));
      
    3. Setzen Sie die DataSource-Eigenschaft der Instanz des printerDuplexList-Steuerelements auf die Werte der PrinterDuplex-Enumeration.

      printerDuplexList.DataSource = System.Enum.GetValues(GetType(PrinterDuplex))
      
      printerDuplexList.DataSource = System.Enum.GetValues(typeof(PrinterDuplex));
      
    4. Setzen Sie die DataSource-Eigenschaft der Instanz des paperSourceList-Steuerelements auf die GetPaperSources()-Hilfsmethode, die Sie im vorherigen Abschnitt erstellt haben.

      paperSourceList.DataSource = GetPaperSources()
      
      paperSourceList.DataSource = GetPaperSources();
      
    5. Wenn Sie eine Website erstellen, geben Sie abschließend einen Aufruf an die DataBind()-Methode ein, um die Werte der vier DropDownList-Steuerelemente zu binden.

      DataBind()
      
      DataBind();