設定來自 ListBox 選擇的參數
在本節中,您會加入一個按鈕,以根據 defaultParameterValuesList ListBox 控制項的選擇來重新顯示報表。
在此按鈕的事件方法中,呼叫頁面初次載入時所呼叫的同一個方法:SetCurrentValuesForParameterField()。但這次並不是傳遞任意值 (巴黎和東京),而是傳遞來自 defaultParameterValuesList ListBox 控制項的選取值。
若要在表單上建立並設定重新顯示按鈕
開啟 Web 或 Windows Form。
從 [檢視] 功能表中,按一下 [設計工具]。
從 [工具箱] 中,將 [Button] 控制項拖曳到 [ListBox] 控制項的右側。
按一下選取 [Button] 控制項。
從 [屬性] 視窗中:
- 將 [ID] 或 [Name] 設定為「redisplay」。
- 將 [Text] 欄位設為 [重新顯示報表]。
您現在已經可以建立按一下按鈕事件方法,此方法會檢查 ListBox 控制項中的選取項目,並且將其傳遞至 SetCurrentValuesForParameterField() 方法。
Web 專案或 Windows 專案的程式碼會稍有不同,因此請選擇完成下列 Web 或 Windows 步驟的其中之一。
若要在 Web 專案中建立重新顯示按鈕的 Click 事件方法
按兩下 [redisplay] 按鈕控制項。
就可進入程式碼後置 (Code-Behind) 類別,其中已經自動產生 redisplay_Click() 事件方法。
在類別簽名碼上方,將 "Imports" [Visual Basic] 或 "using" [C#] 宣告加在 System.Web.UI.WebControls 命名空間的類別頂端 (如果此命名空間尚未宣告的話)。
``` 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\36bhtx7w.alert_note(zh-tw,VS.90).gif" alt="Note" class="note" />附註</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>必須以此方式宣告才能存取 ListItem 類別。</p></td>
</tr>
</tbody>
</table>
- 在剛自動產生的 redisplay_Click() 事件方法中,宣告並產生 ArrayList 執行個體。
``` vb
Dim myArrayList As ArrayList = New ArrayList()
```
``` csharp
ArrayList arrayList = new ArrayList();
```
建立 foreach 迴圈,以便從 defaultParameterValuesList 的 Items 屬性擷取每個 ListItem 執行個體。
For Each item As ListItem In defaultParameterValuesList.Items Next
foreach(ListItem item in defaultParameterValuesList.Items) { }
在 foreach 迴圈內,建立巢狀條件式區塊,若目前 Item 執行個體的 Selected 屬性設為 True 便將 Item 執行個體加入至 Arraylist 執行個體。
If item.Selected Then myArrayList.Add(item.Value) End If
if(item.Selected) { arrayList.Add(item.Value); }
在條件式區塊外及 foreach 迴圈外,呼叫 SetCurrentValuesForParameterField() 方法,並且傳入 CustomersByCity 報表執行個體和 ArrayList 執行個體。
SetCurrentValuesForParameterField(customersByCityReport, myArrayList)
SetCurrentValuesForParameterField(customersByCityReport, arrayList);
現在,從 ListBox 控制項選取的值已經套用成為參數欄位的目前值,因此您可以重新顯示報表。
將 CustomersByCity 報表執行個體重新繫結到 CrystalReportViewer 控制項的的 ReportSource 屬性。
myCrystalReportViewer.ReportSource = customersByCityReport
crystalReportViewer.ReportSource = customersByCityReport;
若要在 Windows 專案中建立重新顯示按鈕的 Click 事件方法
按兩下 [redisplay] 按鈕控制項。
就可進入程式碼後置 (Code-Behind) 類別,其中已經自動產生 redisplay_Click() 事件方法。
在剛自動產生的 redisplay_Click() 事件方法中,宣告並產生 ArrayList 執行個體。
``` vb
Dim myArrayList As ArrayList = New ArrayList()
```
``` csharp
ArrayList arrayList = new ArrayList();
```
建立 foreach 迴圈,以便從 defaultParameterValuesList 的 SelectedItems 屬性擷取每個項目 (字串型別)。
For Each item As String In defaultParameterValuesList.SelectedItems Next
foreach(string item in defaultParameterValuesList.SelectedItems) { }
在條件式區塊內,將 item 字串執行個體加入至 ArrayList 執行個體。
myArrayList.Add(item)
arrayList.Add(item);
在條件式區塊外和 foreach 迴圈外,呼叫 SetCurrentValuesForParameterField() 方法,並且傳入 CustomersByCity 報表執行個體和 ArrayList 執行個體。
SetCurrentValuesForParameterField(customersByCityReport, myArrayList)
SetCurrentValuesForParameterField(customersByCityReport, arrayList);
現在,從 ListBox 控制項所選取的值已經套用為參數欄位的目前值,您已經可以重新顯示報表。
請將 CustomersByCity 報表執行個體重新繫結到 CrystalReportViewer 控制項的 ReportSource 屬性。
myCrystalReportViewer.ReportSource = customersByCityReport
crystalReportViewer.ReportSource = customersByCityReport;
若要測試 defaultParameterValuesList ListBox 控制項的填入狀況
您現在已經可以建置及執行專案,以驗證是否已順利重設參數欄位。
從 [建置] 功能表中,選取 [建置方案]。
如果發生任何建置錯誤,請立即修正。
從 [偵錯] 功能表中,按一下 [啟動]。
在 [ListBox] 控制項中,按住 CTRL 鍵同時在清單中選取不同的城市。
按一下 [重新顯示報表]。
頁面會重新載入並顯示居住在您所選取城市清單中之客戶的客戶記錄。
- 返回 Visual Studio,再按一下 [停止] 退出偵錯模式。
如果您是在設計 Windows 應用程式,則至此已經大功告成。如果您正在處理的是網站,請繼續進行「設定參數保存性」。