Impostazione di parametri dalle selezioni di ListBox
In questa sezione viene descritto come aggiungere un pulsante per rivisualizzare il report in base alle selezioni effettuate nel controllo ListBox defaultParameterValuesList.
All’interno del metodo di evento per questo pulsante, viene chiamato lo stesso metodo chiamato al primo caricamento della pagina:SetCurrentValuesForParameterField() Questa volta, tuttavia, anziché passare valori arbitrari (Paris e Tokyo), vengono passati valori selezionati nel controllo ListBox defaultParameterValuesList.
Per creare e configurare un pulsante di rivisualizzazione sul form
Aprire il Web Form o il Windows Form.
Dal menu Visualizza, scegliere Finestra di progettazione.
Dalla casella degli strumenti, trascinare un controllo Button a destra del controllo ListBox.
Fare clic sul controllo Button per selezionarlo.
Nella finestra Proprietà:
- Impostare ID (o Name) su "redisplay."
- Impostare Text su "Rivisualizza report".
A questo punto è possibile creare un metodo di evento clic per il controllo Button che ricerchi gli elementi selezionati nel controllo ListBox e li passi al metodo SetCurrentValuesForParameterField().
Il codice varia leggermente a seconda che si utilizzi un progetto Web o Windows, quindi completare solo la procedura appropriata, Web o Windows, tra quelle riportate di seguito.
Per creare il metodo di evento clic per il controllo Button di rivisualizzazione in un progetto Web
Fare doppio clic sul controllo Button di rivisualizzazione.
Si torna alla classe di codice sottostante in cui è stato generato automaticamente il metodo di evento redisplay_Click().
Sopra la firma della classe, all'inizio della classe, aggiungere una dichiarazione "Imports" [Visual Basic] o "using" [C#] per lo spazio dei nomi System.Web.UI.WebControls (se non è stato già dichiarato).
``` vb
Imports System.Web.UI.WebControls
```
``` csharp
using System.Web.UI.WebControls;
```
<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images\Aa983431.alert_note(it-it,VS.90).gif" alt="Note" class="note" />Nota</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>Questa dichiarazione è necessaria per accedere alla classe ListItem.</p></td>
</tr>
</tbody>
</table>
- All'interno del metodo di evento redisplay_Click()appena generato automaticamente, dichiarare e creare un'istanza ArrayList.
``` vb
Dim myArrayList As ArrayList = New ArrayList()
```
``` csharp
ArrayList arrayList = new ArrayList();
```
Creare un ciclo foreach per recuperare tutte le istanze ListItem dalla proprietà Items di defaultParameterValuesList.
For Each item As ListItem In defaultParameterValuesList.Items Next
foreach(ListItem item in defaultParameterValuesList.Items) { }
All'interno del ciclo foreach, creare un blocco condizionale nidificato che aggiunga l'istanza Item all'istanza Arraylist se la proprietà Selected dell'istanza Item corrente è impostata su True.
If item.Selected Then myArrayList.Add(item.Value) End If
if(item.Selected) { arrayList.Add(item.Value); }
All'esterno del blocco condizionale e del ciclo foreach, chiamare il metodo SetCurrentValuesForParameterField() e passare l’istanza del report CustomersByCity e l'istanza ArrayList.
SetCurrentValuesForParameterField(customersByCityReport, myArrayList)
SetCurrentValuesForParameterField(customersByCityReport, arrayList);
Ora che i valori selezionati nel controllo ListBox sono stati applicati come valori correnti per il campo parametro, è possibile rivisualizzare il report.
Ricollegare l’istanza del report CustomersByCity alla proprietà ReportSource del controllo CrystalReportViewer.
myCrystalReportViewer.ReportSource = customersByCityReport
crystalReportViewer.ReportSource = customersByCityReport;
Per creare il metodo di evento clic per il controllo Button di rivisualizzazione in un progetto Windows
Fare doppio clic sul controllo Button di rivisualizzazione.
Si torna alla classe di codice sottostante in cui è stato generato automaticamente il metodo di evento redisplay_Click().
All'interno del metodo di evento redisplay_Click()appena generato automaticamente, dichiarare e creare un'istanza ArrayList.
``` vb
Dim myArrayList As ArrayList = New ArrayList()
```
``` csharp
ArrayList arrayList = new ArrayList();
```
Creare un ciclo foreach per recuperare tutti gli elementi (come stringa) dalla proprietà SelectedItems di defaultParameterValuesList.
For Each item As String In defaultParameterValuesList.SelectedItems Next
foreach(string item in defaultParameterValuesList.SelectedItems) { }
All'interno del blocco condizionale, aggiungere l'istanza String dell'elemento all'istanza ArrayList.
myArrayList.Add(item)
arrayList.Add(item);
Fuori dal blocco condizionale e dal ciclo foreach, chiamare il metodo SetCurrentValuesForParameterField() e passare l’istanza del report CustomersByCity e l’istanza ArrayList.
SetCurrentValuesForParameterField(customersByCityReport, myArrayList)
SetCurrentValuesForParameterField(customersByCityReport, arrayList);
Ora che i valori selezionati nel controllo ListBox sono stati applicati come valori correnti per il campo parametro, è possibile rivisualizzare il report.
Ricollegare l’istanza del report CustomersByCity alla proprietà ReportSource del controllo CrystalReportViewer.
myCrystalReportViewer.ReportSource = customersByCityReport
crystalReportViewer.ReportSource = customersByCityReport;
Per verificare la compilazione del controllo ListBox defaultParameterValuesList
A questo punto è possibile creare ed eseguire il progetto per verificare se il campo parametro è stato reimpostato correttamente.
Dal menu Genera, scegliere Genera soluzione.
Se si verificano errori di generazione, correggerli.
Dal menu Debug, scegliere Avvia.
Nel controllo ListBox, tenendo premuto il tasto Ctrl fare clic per selezionare almeno quattro diverse città nell’elenco.
Fare clic su Rivisualizza report.
La pagina viene ricaricata visualizzando i record dei clienti che nelle città selezionate.
- Tornare a Visual Studio e fare clic su Interrompi per uscire dalla modalità di debug.
Se si utilizza un'applicazione Windows, la procedura è terminata. Se si lavorando in un sito Web, passare a Configurazione della persistenza dei parametri.