Hinzufügen des Parametercodes für den Unterbericht

Sie können der CodeBehind-Klasse jetzt Parametercode für den Unterbericht hinzufügen. Erstellen Sie zunächst die private Hilfsmethode SetDateRangeForOrders().

So erstellen und codieren Sie die SetDateRangeForOrders()-Methode

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

  2. Klicken Sie im Menü Ansicht auf Code.

  3. Fügen Sie am Anfang der Klasse unterhalb der vorhandenen PARAMETER_FIELD_NAME-Konstanten, die im vorherigen Lernprogramm hinzugefügt wurde, zwei neue Konstanten ein.

    Private Const SUBREPORT_PARAMETER_FIELD_NAME As String = "OrderDateRange"
    Private Const SUBREPORT_NAME As String = "CustomerOrders"
    
    private const string SUBREPORT_PARAMETER_FIELD_NAME = "OrderDateRange";
    private const string SUBREPORT_NAME = "CustomerOrders";
    
  4. Erstellen Sie am Ende der Klasse eine neue private Methode mit dem Namen SetDateRangeForOrders(), die drei Parameter enthält: ReportDocument, string startDate und string endDate.

    Private Sub SetDateRangeForOrders(ByVal myReportDocument As ReportDocument, ByVal startDate As String, ByVal endDate As String)
    
    End Sub
    
    private void SetDateRangeForOrders(ReportDocument reportDocument, string startDate, string endDate)
    {
    }
    
  5. Deklarieren und instantiieren Sie innerhalb dieser Methode die ParameterRangeValue-Klasse.

``` vb
Dim myParameterRangeValue As ParameterRangeValue = New
ParameterRangeValue()
```

``` csharp
ParameterRangeValue parameterRangeValue = new
ParameterRangeValue();
```

<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>Damit auf die ParameterRangeValue-Klasse zugegriffen werden kann, fügen Sie am Anfang der CodeBehind-Klasse für den CrystalDecisions.Shared-Namespace eine der Anweisungen &quot;Imports&quot; [Visual Basic] oder &quot;using&quot; [C#] hinzu. (Sie haben diese Deklaration in <a href="https://msdn.microsoft.com/de-de/library/vs%7ccrystlmn%7c%7e%5chtml%5ctopic168.htm(v=VS.90)">Projekt-Setup</a> hinzugefügt.)</p></td>
</tr>
</tbody>
</table>
  1. Setzen Sie die StartValue-Eigenschaft der ParameterRangeValue-Instanz auf den startDate-Methodenparameter.

    myParameterRangeValue.StartValue = startDate
    
    parameterRangeValue.StartValue = startDate;
    
    NoteAnmerkung

    Die Eigenschaften StartValue und EndValue der ParameterRangeValue-Klasse akzeptieren Werte des Datentyps "Object". Dieser generische Typ ermöglicht es, dass Bereichswerte unterschiedlicher Typen übergeben werden können, z.B.: "text", "number", "date", "currency" oder "time".

  2. Setzen Sie die EndValue-Eigenschaft der ParameterRangeValue-Instanz auf den endDate-Methodenparameter.

    myParameterRangeValue.EndValue = endDate
    
    parameterRangeValue.EndValue = endDate;
    
  3. Setzen Sie die obere und untere Grenze auf "bound-inclusive".

    myParameterRangeValue.LowerBoundType = RangeBoundType.BoundInclusive
    myParameterRangeValue.UpperBoundType = RangeBoundType.BoundInclusive
    
    parameterRangeValue.LowerBoundType = RangeBoundType.BoundInclusive;
    parameterRangeValue.UpperBoundType = RangeBoundType.BoundInclusive;
    
    NoteAnmerkung

    Bei BoundInclusive werden die oberen und unteren Bereichswerte in den Bereich eingeschlossen.

    Sie können dem Parameter des Unterberichts jetzt die ParameterRangeValue-Instanz zuweisen.

  4. Rufen Sie das ParameterFieldDefinitions-Objekt ab, das aus der DataDefinition-Eigenschaft der ReportDocument-Instanz stammt.

<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>ParameterFieldDefinitions ist eine Indexklasse, die Instanzen der ParameterFieldDefinition-Klasse enthält.</p></td>
</tr>
</tbody>
</table>

``` vb
Dim myParameterFieldDefinitions As ParameterFieldDefinitions = myReportDocument.DataDefinition.ParameterFields
```

``` csharp
ParameterFieldDefinitions parameterFieldDefinitions = reportDocument.DataDefinition.ParameterFields;
```
  1. Rufen Sie die ParameterFieldDefinition-Instanz aus der ParameterFieldDefinitions-Indexklasse ab, die auf zwei Indexwerten basiert: dem Namen des Parameterfeldes des Unterberichts und dem Namen des Unterberichts. Übergeben Sie die beiden am Anfang der Klasse deklarierten konstanten Werte.

    Dim myParameterFieldDefinition As ParameterFieldDefinition = myParameterFieldDefinitions(SUBREPORT_PARAMETER_FIELD_NAME,
    SUBREPORT_NAME)
    
    ParameterFieldDefinition parameterFieldDefinition = parameterFieldDefinitions[SUBREPORT_PARAMETER_FIELD_NAME,
    SUBREPORT_NAME];
    
  2. Rufen Sie die Clear()-Methode der CurrentValues-Eigenschaft der ParameterFieldDefinition-Instanz auf, um vorhandene Werte aus der CurrentValues-Eigenschaft zu entfernen.

    myParameterFieldDefinition.CurrentValues.Clear()
    
    parameterFieldDefinition.CurrentValues.Clear();
    
  3. Fügen Sie der CurrentValues-Eigenschaft der ParameterFieldDefinition-Instanz die zuvor erstellte ParameterRangeValue-Instanz hinzu.

    myParameterFieldDefinition.CurrentValues.Add(myParameterRangeValue)
    
    parameterFieldDefinition.CurrentValues.Add(parameterRangeValue);
    
  4. Rufen Sie die ApplyCurrentValues()-Methode auf, und übergeben Sie die CurrentValues-Eigenschaft der ParameterFieldDefinition-Instanz.

    myParameterFieldDefinition.ApplyCurrentValues(myParameterFieldDefinition.CurrentValues)
    
    parameterFieldDefinition.ApplyCurrentValues(parameterFieldDefinition.CurrentValues);
    

Durch diese schrittweise Anleitung wurden Start- und Enddatumswerte in einer ParameterRangeValue-Instanz festgelegt und an den OrderDateRange-Parameter des Unterberichts CustomerOrders übergeben.