在本节中,将添加一个按钮,根据 defaultParameterValuesListListBox 控件中的选择项重新显示报表。在此按钮的事件方法中,将调用首次加载页面时调用的方法:SetCurrentValuesForParameterField()。但这次传递的不是任意值(Paris 和 Tokyo),而是传递 defaultParameterValuesListListBox 控件中的选定值。
创建和配置窗体上的重新显示按钮
- 打开 Web 或 Windows 窗体。
- 从“视图”菜单中,单击“设计器”。
- 从“工具箱”中,将“Button”控件拖到“ListBox”控件的右侧。
- 单击“Button”控件,将其选中。
- 从“属性”窗口中执行以下操作:
- 将“ID”或“Name”设置为“redisplay”。
- 将“Text”设置为“重新显示报表”。
为 Web 项目中的重新显示按钮创建单击事件方法
现在即可创建按钮单击事件方法,检查 ListBox 控件中的选定项并将其传递给 SetCurrentValuesForParameterField() 方法。
用于 Web 项目和用于 Windows 项目的代码会略有不同,因此仅完成下面的 Web 或 Windows 过程即可。
- 双击“重新显示报表”按钮。
将会看到代码隐藏类,其中自动生成了 redisplay\_Click() 事件方法。
- 如果还没有声明 System.Web.UI.WebControls 命名空间,则在类签名之上,向类顶部为该命名空间添加 "Imports" [Visual Basic] 或 "using" [C#] 声明。
``` vb
Imports System.Web.UI.WebControls
```
``` csharp
using System.Web.UI.WebControls;
```
在刚刚自动生成的 redisplay_Click() 事件方法中,声明并实例化 ArrayList。
Dim myArrayList As ArrayList = New ArrayList()ArrayList arrayList = new ArrayList();创建一个 foreach 循环,从 defaultParameterValuesList ListBox 的 Items 属性中获取各个 ListItem 实例。
For Each item As ListItem In defaultParameterValuesList.Items Nextforeach(ListItem item in defaultParameterValuesList.Items) { }在 foreach 循环中,创建一个嵌套条件块,检查当前 Item 实例的 Selected 属性是否设置为 True。
If item.Selected Then End Ifif(item.Selected) { }在条件块中,将 Item 实例的 Value 属性添加到 ArrayList 实例中。
myArrayList.Add(item.Value)arrayList.Add(item.Value);在条件块之外以及 foreach 循环之外,将 CustomersByCity 报表的文件目录路径重新绑定到 CrystalReportViewer 类的 ReportSource 属性。
注意下面显示的文件目录路径是用于 Visual Studio 项目的。“项目名称”要替换为您的网站的名称。“用户名”要替换为您的登录名。
网站项目的默认路径:
myCrystalReportViewer.ReportSource = "C:\WebSites\项目名称\CustomersByCity.rpt"crystalReportViewer.ReportSource = "C:\\WebSites\\项目名称\\CustomersByCity.rpt";从 CrystalReportViewer 控件的 ParameterFieldInfo 属性中获取 ParameterFields 实例。
Dim myParameterFields As ParameterFields = myCrystalReportViewer.ParameterFieldInfoParameterFields parameterFields = crystalReportViewer.ParameterFieldInfo;将 ParameterFields 和 ArrayList 实例传入 SetCurrentValuesForParameterField() 方法。
SetCurrentValuesForParameterField(myParameterFields, myArrayList)SetCurrentValuesForParameterField(parameterFields, arrayList);
为 Windows 项目中的重新显示按钮创建单击事件方法
- 双击重新显示 Button 控件。
将会看到代码隐藏类,其中自动生成了 redisplay\_Click() 事件方法。
在刚刚自动生成的 redisplay_Click() 事件方法中,声明并实例化 ArrayList。
Dim myArrayList As ArrayList = New ArrayList()ArrayList arrayList = new ArrayList();创建一个 foreach 循环,从 defaultParameterValuesList ListBox 的 SelectedItems 属性获取每一项(作为字符串)。
For Each item As String In defaultParameterValuesList.SelectedItems Nextforeach(string item in defaultParameterValuesList.SelectedItems) { }在 foreach 循环中,将项字符串实例添加到 ArrayList 实例。
myArrayList.Add(item)arrayList.Add(item);在 foreach 循环之外,将 CustomersByCity 报表的文件目录路径重新绑定到 CrystalReportViewer 类的 ReportSource 属性。
<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images/8yfdxzdx.alert_note(zh-cn,VS.90).gif" alt="Note" class="note" />注意</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>下面显示的文件目录路径是用于 Visual Studio 项目的。“项目名称”要替换为您的 Windows 项目的名称。“用户名”要替换为您的登录名。</p></td>
</tr>
</tbody>
</table>
Windows 项目的默认路径:
``` vb
myCrystalReportViewer.ReportSource = "C:\Documents and Settings\用户名\My Documents\Visual Studio\Projects\项目名称\CustomersByCity.rpt"
```
``` csharp
crystalReportViewer.ReportSource = "C:\\Documents and Settings\\用户名\\My Documents\\Visual Studio\\Projects\\项目名称\\CustomersByCity.rpt";
```
从 CrystalReportViewer 控件的 ParameterFieldInfo 属性中获取 ParameterFields 实例。
Dim myParameterFields As ParameterFields = myCrystalReportViewer.ParameterFieldInfoParameterFields parameterFields = crystalReportViewer.ParameterFieldInfo;将 ParameterFields 和 ArrayList 实例传入 SetCurrentValuesForParameterField() 方法。
``` vb
SetCurrentValuesForParameterField(myParameterFields, myArrayList)
```
``` csharp
SetCurrentValuesForParameterField(parameterFields, arrayList);
```
验证是否已经填充 defaultParameterValuesList ListBox 控件
现在已将 ListBox 控件的选定值应用为参数字段的当前值,可以重新显示报表了。
现在即可生成并运行项目,验证是否已经成功重置了参数字段。
从“生成”菜单中选择“生成解决方案”。
如果生成过程中出错,请立即纠正。
从“调试”菜单中,单击“开始”。
在 ListBox 控件中,按住 CTRL 键的同时单击选择列表中的不同城市。
单击“重新显示报表”按钮。
页面会重新加载,显示居住在刚才选定的一组城市中的客户的客户记录。
- 返回到 Visual Studio,然后单击“停止”从调试模式中退出。