Condividi tramite


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 ListBoxdefaultParameterValuesList controllo. 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 i valori selezionati nel controllo ListBoxdefaultParameterValuesList.

Per creare e configurare un pulsante di rivisualizzazione sul form

  1. Aprire il Web Form o il Windows Form.
  2. Dal menu Visualizza, scegliere Finestra di progettazione.
  3. Dalla casella degli strumenti, trascinare un controllo Button a destra del controllo ListBox.
  4. Fare clic sul controllo Button per selezionarlo.
  5. Nella finestra Proprietà, effettuare le seguenti operazioni:
  6. Impostare ID (o Name) su "redisplay."
  7. Impostare Text su "Rivisualizza report".

Per creare il metodo di evento clic per il controllo Button di rivisualizzazione in un progetto Web

A questo punto è possibile creare un metodo di evento clic per il controlloListBox che ricerchi gli elementi selezionati nel controllo 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.

  1. Fare doppio clic sul pulsante Rivisualizza report.
Si torna alla classe di codice sottostante in cui è stato generato automaticamente il metodo di evento redisplay\_Click().
  1. 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;
```
  1. All'interno del metodo di evento redisplay_Click()appena generato automaticamente, dichiarare e creare un'istanza ArrayList.

    Dim myArrayList As ArrayList = New ArrayList()
    
    ArrayList arrayList = new ArrayList();
    
  2. Creare un ciclo foreach per recuperare tutte le istanze ListItem dalla proprietà Items del controllo ListBox defaultParameterValuesList.

    For Each item As ListItem In defaultParameterValuesList.Items
    
    Next
    
    foreach(ListItem item in defaultParameterValuesList.Items)
    {
    }
    
  3. All’interno del ciclo foreach, creare un blocco condizionale nidificato che controlli se la proprietà Selected dell’istanza Item corrente sia impostata su True.

    If item.Selected Then
    
    End If
    
    if(item.Selected)
    {
    }
    
  4. All'interno del blocco condizionale, aggiungere la proprietà Value dell’istanza Item all’istanza ArrayList.

    myArrayList.Add(item.Value)
    
    arrayList.Add(item.Value);
    
  5. Fuori dal blocco condizionale e dal ciclo foreach, collegare nuovamente il percorso della directory di file del report CustomersByCity alla proprietà ReportSource della classe CrystalReportViewer.

    NoteNota

    Il percorso della directory di file visualizzato di seguito riguarda un progetto Visual Studio. "NomeProgetto" viene sostituito dal nome del sito Web. "NomeUtente" viene sostituito dal nome di accesso in uso.

    Il percorso predefinito per un progetto di sito Web è:

    myCrystalReportViewer.ReportSource = "C:\WebSites\ NomeProgetto\CustomersByCity.rpt"
    
    crystalReportViewer.ReportSource = "C:\\WebSites\\ NomeProgetto\\CustomersByCity.rpt";
    
  6. Recuperare l'istanza ParameterFields dalla proprietà del controllo CrystalReportViewerParameterFieldInfo.

    Dim myParameterFields As ParameterFields =
    myCrystalReportViewer.ParameterFieldInfo
    
    ParameterFields parameterFields =
    crystalReportViewer.ParameterFieldInfo;
    
  7. Passare le istanze ParameterFields e ArrayList al metodo SetCurrentValuesForParameterField().

    SetCurrentValuesForParameterField(myParameterFields, myArrayList)
    
    SetCurrentValuesForParameterField(parameterFields, arrayList);
    

Per creare il metodo di evento clic per il controllo Button di rivisualizzazione in un progetto Windows

  1. 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().
  1. All'interno del metodo di evento redisplay_Click()appena generato automaticamente, dichiarare e creare un'istanza ArrayList.

    Dim myArrayList As ArrayList = New ArrayList()
    
    ArrayList arrayList = new ArrayList();
    
  2. Creare un ciclo foreach per recuperare tutti gli elementi (come stringa) dalla proprietà SelectedItems del controllo ListBox defaultParameterValuesList.

    For Each item As String In defaultParameterValuesList.SelectedItems
    
    Next
    
    foreach(string item in defaultParameterValuesList.SelectedItems)
    {
    }
    
  3. All'interno del ciclo foreach, aggiungere un'istanza di stringa dell'elemento all'istanza ArrayList.

    myArrayList.Add(item)
    
    arrayList.Add(item);
    
  4. Fuori dal ciclo foreach, collegare nuovamente il percorso della directory di file del report CustomersByCity alla proprietà ReportSource della classe CrystalReportViewer.

<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>Il percorso della directory di file visualizzato di seguito riguarda un progetto Visual Studio. &quot;NomeProgetto&quot; viene sostituito dal nome del progetto Windows. &quot;NomeUtente&quot; viene sostituito dal nome di accesso in uso.</p></td>
</tr>
</tbody>
</table>

Il percorso predefinito per un progetto Windows è:

``` vb
myCrystalReportViewer.ReportSource = "C:\Documents and Settings\NomeUtente\Documenti\Visual Studio\Projects\ProjectName\CustomersByCity.rpt"
```

``` csharp
crystalReportViewer.ReportSource = "C:\\Documents and Settings\\NomeUtente\\Documenti\\Visual Studio\\Projects\\ProjectName\\CustomersByCity.rpt";
```
  1. Recuperare l'istanza ParameterFields dalla proprietà del controllo CrystalReportViewerParameterFieldInfo.

    Dim myParameterFields As ParameterFields =
    myCrystalReportViewer.ParameterFieldInfo
    
    ParameterFields parameterFields =
    crystalReportViewer.ParameterFieldInfo;
    
  2. Passare le istanze ParameterFields e ArrayList al metodo SetCurrentValuesForParameterField().

``` vb
SetCurrentValuesForParameterField(myParameterFields, myArrayList)
```

``` csharp
SetCurrentValuesForParameterField(parameterFields, arrayList);
```

Per verificare la compilazione del controllo ListBox defaultParameterValuesList

Ora che i valori selezionati nel controllo ListBox sono stati applicati come valori correnti per il campo parametro, è possibile rivisualizzare il report.

A questo punto è possibile creare ed eseguire il progetto per verificare se il campo parametro è stato reimpostato correttamente.

  1. Dal menu Genera, scegliere Genera soluzione.

  2. Se si verificano errori di generazione, correggerli.

  3. Dal menu Debug, scegliere Avvia.

  4. Nel controllo ListBox, tenendo premuto il tasto Ctrl fare clic per selezionare più città dall'elenco.

  5. Fare clic sul pulsante Rivisualizza report.

La pagina viene ricaricata visualizzando i record dei clienti che nelle città selezionate.
  1. Tornare a Visual Studio e fare clic su Interrompi per uscire dalla modalità di debug.