Compartir a través de


Utilizar un control DropDownList para modificar la fórmula de selección

En esta sección, va a llenar el control DropDownList con operadores de comparación. Va a crear una enumeración que contiene los operadores de comparación.

El control DropDownList selecciona si desea mostrar los nombres de los clientes que sean iguales, menores, mayores, menores o iguales, mayores o iguales que o no sean iguales que el texto especificado en el control TextBox.

En el método de evento redisplay_Click(), va a modificar la cadena actualmente asignada a la propiedad SelectionFormula del control CrystalReportViewer.

Para crear la enumeración CeComparisonOperator

  1. En el Explorador de soluciones, haga clic con el botón secundario en el nombre de proyecto en negrita, elija Agregar y, a continuación, haga clic en Agregar nuevo elemento.

  2. En el cuadro de diálogo Agregar nuevo elemento, seleccione Clase en la vista Plantillas.

  3. En el campo Nombre, escriba CeComparisonOperator y, a continuación, haga clic en Agregar.

<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images\z15yzzew.alert_note(es-es,VS.90).gif" class="note" />Nota</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>Puede que se le pida que coloque esta clase en un directorio de código. Haga clic en el botón Sí.</p></td>
</tr>
</tbody>
</table>
  1. En la firma de clase, cambie la palabra clase por enum para convertir la clase en una enumeración.

    En un proyecto Windows de C#, también debe cambiar el espacio de nombres al nombre del proyecto.

    Nota

    En Visual Basic, recuerde cambiar las firmas tanto de apertura como de cierre de la clase a enumeración.

  2. Puesto que las enumeraciones no tienen constructores, elimine el método constructor predeterminado que se proporciona en la versión de C# del código.

  3. En la enumeración, especifique los valores:

    EqualTo
    LessThan
    GreaterThan
    LessThan_or_EqualTo
    GreaterThan_or_EqualTo
    Not_EqualTo
    
    EqualTo,
    LessThan,
    GreaterThan,
    LessThan_or_EqualTo,
    GreaterThan_or_EqualTo,
    Not_EqualTo
    

Para llenar el control DropDownList desde la enumeración CeComparisonOperator para un sitio Web

Los siguientes procedimientos explican cómo enlazar la enumeración CeComparisonOperator al control DropDownList de un sitio Web o un proyecto para Windows. Siga las instrucciones de uno de los siguientes procedimientos de varios pasos.

  1. Abra el formulario Web Forms.

  2. En el menú Ver, haga clic en Código.

  3. En el bloque condicional Not IsPostBack del método ConfigureCrystalReports(), delante de la declaración de cadena de la fórmula de selección, establezca el valor de la propiedad DataSource del control DropDownList en los valores de la enumeración CeComparisonOperator.

``` vb
selectOperatorList.DataSource =
System.Enum.GetValues(GetType(CeComparisonOperator))
```

``` csharp
selectOperatorList.DataSource =
System.Enum.GetValues(typeof(CeComparisonOperator));
```
  1. Ahora, llame al método DataBind() del control DropDownListselectOperatorList para enlazar los valores al control.
``` vb
selectOperatorList.DataBind()
```

``` csharp
selectOperatorList.DataBind();
```

Para llenar el control DropDownList desde la enumeración CeComparisonOperator para un proyecto Windows

  1. Abra el formulario Windows Forms.

  2. En el menú Ver, haga clic en Código.

  3. En el método ConfigureCrystalReports(), delante de la declaración de cadena de la fórmula de selección, establezca el valor de la propiedad del control ComboBoxselectOperatorList en los valores de la enumeración CeComparisonOperator.

``` vb
selectOperatorList.DataSource =
System.Enum.GetValues(GetType(CeComparisonOperator))
```

``` csharp
selectOperatorList.DataSource =
System.Enum.GetValues(typeof(CeComparisonOperator));
```

Para crear el método auxiliar GetSelectedCompareOperator()

Después, va a crear el método auxiliar GetSelectedCompareOperator() para que devuelva el índice seleccionado como cadena que representa un signo de operador de comparación.

  1. En la parte inferior de la clase, cree un método auxiliar privado denominado GetSelectedCompareOperator() que devuelva una variable de cadena.
``` vb
Private Function GetSelectedCompareOperator() As String

End Function
```

``` csharp
private string GetSelectedCompareOperator()
{
}
```
  1. En el método, cree un enunciado "Select Case" [Visual Basic] o "switch" [C#] que haga referencia a los miembros de la enumeración CeComparisonOperator y devuelva el signo del operador de comparación como variable de cadena.
``` vb
Select Case selectOperatorList.SelectedIndex
Case CeComparisonOperator.EqualTo
return "="
Case CeComparisonOperator.LessThan
return "<"
Case CeComparisonOperator.GreaterThan
return ">"
Case CeComparisonOperator.LessThan_or_EqualTo
return "<="
Case CeComparisonOperator.GreaterThan_or_EqualTo
return ">="
Case CeComparisonOperator.Not_EqualTo
return "<>"
Case Else
return "="
End Select
```

``` csharp
switch ((CeComparisonOperator)selectOperatorList.SelectedIndex)
{
case CeComparisonOperator.EqualTo:
return "=";
case CeComparisonOperator.LessThan:
return "<";
case CeComparisonOperator.GreaterThan:
return ">";
case CeComparisonOperator.LessThan_or_EqualTo:
return "<=";
case CeComparisonOperator.GreaterThan_or_EqualTo:
return ">=";
case CeComparisonOperator.Not_EqualTo:
return "<>";
default:
return "=";
}
```

Para modificar el operador de comparación de Nombre del cliente asignado a la propiedad SelectionFormula

En el método de evento redisplay_Click(), se utiliza actualmente un signo "mayor que" (">") para la selección del campo Nombre del cliente. A continuación, aprenderá a cambiar el signo al operador de comparación seleccionado desde el control DropDownList. El signo seleccionado se devuelve como cadena al llamar al método auxiliar GetSelectedCompareOperator().

  1. En la parte superior del método de evento redisplay_Click(), llame al método auxiliar GetSelectedCompareOperator() y asigne el resultado a una variable de cadena.
``` vb
Dim mySelectedOperator As String = GetSelectedCompareOperator()
```

``` csharp
string selectedOperator = GetSelectedCompareOperator();
```
  1. Para la variable de cadena de la fórmula de selección, reemplace el signo "mayor que" (">") por la cadena del operador seleccionado.

    Dim mySelectFormula As String = "{Customer.Last Year's Sales} >
    " & lastYearsSales.Text _
    & " AND Mid({Customer.Customer Name}, 1) " &
    mySelectedOperator & " """ & customerName.Text & """"
    
    string selectFormula = "{Customer.Last Year's Sales} > " +
    lastYearsSales.Text
    + " AND Mid({Customer.Customer Name}, 1) " + selectedOperator + "
    \"" + customerName.Text + "\"";
    

Para probar la fórmula de selección del informe CustomersBySalesName

Ha creado una fórmula de selección que depende de los valores especificados para el campo Ventas del año pasado y el campo Nombre del cliente.

Ahora puede generar y probar la fórmula de selección.

  1. En el menú Generar, haga clic en Generar solución.

  2. Si existen errores de generación, continúe y corríjalos ahora.

  3. En el menú Depurar, haga clic en Iniciar.

1.  En el control TextBox lastYearsSales, escriba 40000.
2.  En el control TextBox customerName, escriba Athens Bicycle Co..
3.  En DropDownList, seleccione LessThan.
4.  Haga clic en Volver a mostrar el informe.

El informe de Crystal Reports muestra dos registros de cliente: Alley Cat Cycles y Ankara Bicycle Company.
  1. Vuelva a Visual Studio y haga clic en Detener para salir del modo de depuración.