在报表中搜索
在本节中,您要学习如何在绑定到 CrystalReportViewer 控件的 Crystal 报表中搜索文本。
需要一个用于键入所需搜索字符串的 TextBox 控件,一个用于在报表中搜索的 Button 控件,以及一个用于通知搜索是否成功的 Label 控件。
添加用于“搜索”选项的 TextBox、Button 和 Label 控件
- 在“设计”视图中打开 Web 或 Windows 窗体。
- 从“工具箱”中将一个“TextBox”控件拖到表的第五行第一列中。
- 选择“TextBox”控件,然后从“属性”窗口执行以下操作:
- 将“ID”(或“Name”)设置为“searchText”。
- 将“Text”属性设置为空白。
- 从“工具箱”中将一个“Button”控件拖到表的第五行第二列中。
- 选择“Button”控件,然后从“属性”窗口执行以下操作:
- 将“ID”(或“Name”)设置为“search”。
- 将“Text”设置为“搜索文本”。
- 从“工具箱”中将一个“Label”控件拖到表的第五行第三列中。
- 将“ID”(或“Name”)设置为“message”。
- 将“Text”设置为空白。
- 将“ForeColor”设置为“红色”。
- 创建 MessageConstants 类,以将针对搜索的标准应答消息存储为字符串常量。
注意 有关创建此类的说明,请参见“添加错误消息类”。
为网站编写 search_Click() 事件处理程序的代码
接下来,必须在搜索 Button 控件中调用 SearchAndHighlightText() 方法。
注意 |
---|
与 Windows 项目相比,SearchAndHighlightText() 方法的行为对于网站并不相同。 |
由于方法在网站和 Windows 项目中的行为不同,因此,要为网站或 Windows 项目完成以下相应的步骤。
- 双击搜索 Button 控件。
即会出现报表的代码隐藏类,显示已经自动生成 search\_Click() 事件处理程序。
- 获取在“TextBox”控件中键入的文本,然后将值传递到“CrystalReportViewer”控件的 SearchAndHighlightText() 方法。将方法调用赋给布尔值变量。
<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>要使 SearchDirection 类可访问,必须在代码隐藏类的顶部包含 "Imports" [Visual Basic] 或 "using" [C#] 语句,引用 CrystalDecisions.Shared 命名空间。(之前在<a href="ms227453(v=vs.90).md">“项目设置”</a>中已添加此声明。)</p></td>
</tr>
</tbody>
</table>
``` vb
Dim mySearchResult As Boolean = myCrystalReportViewer.SearchAndHighlightText(searchText.Text, SearchDirection.Forward)
```
``` csharp
bool searchResult = crystalReportViewer.SearchAndHighlightText(searchText.Text, SearchDirection.Forward);
```
创建一个条件块,测试搜索是否成功。
If Not mySearchResult Then Else End If
if(!searchResult) { } else { }
在 If 块内,将 MessageConstants.SUCCESS 常量赋给 messageLabel 的 Text 属性。
message.Text = MessageConstants.SUCCESS
message.Text = MessageConstants.SUCCESS;
在 Else 块内,将 MessageConstants.FAILURE 常量赋给 messageLabel 的 Text 属性。
message.Text = MessageConstants.FAILURE
message.Text = MessageConstants.FAILURE;
为 Windows 项目编写 search_Click() 事件处理程序的代码
跳过以下针对 Windows 项目的过程而执行其后的测试过程。
- 双击搜索 Button 控件。
即会出现报表的代码隐藏类,显示已经自动生成 search\_Click() 事件处理程序。
- 获取在“TextBox”控件中键入的文本,然后将值传递到“CrystalReportViewer”控件的 SearchAndHighlightText() 方法。将方法调用赋给布尔值变量。
``` vb
Dim mySearchResult As Boolean = myCrystalReportViewer.SearchAndHighlightText(searchText.Text)
```
``` csharp
bool searchResult = crystalReportViewer.SearchAndHighlightText(searchText.Text);
```
创建一个条件块,测试搜索是否成功。
If mySearchResult Then Else End If
if(searchResult) { } else { }
在 If 块内,将 MessageConstants.SUCCESS 常量赋给 messageLabel 的 Text 属性。
message.Text = MessageConstants.SUCCESS
message.Text = MessageConstants.SUCCESS;
在 Else 块内,将 MessageConstants.FAILURE 常量赋给 messageLabel 的 Text 属性。
message.Text = MessageConstants.FAILURE
message.Text = MessageConstants.FAILURE;
测试“搜索”Button 控件
从“生成”菜单中,单击“生成解决方案”。
如果生成过程中出错,请立即纠正。
从“调试”菜单中,单击“开始”。
即会显示图表报表以及已添加的所有控件。
- 在“searchTextTextBox”中输入China,然后单击“搜索”。
页面会重新加载,突出显示搜索结果并显示成功消息。
- 在“searchTextTextBox”中输入 hello,然后单击“搜索”。
页面会重新加载,并显示失败消息。
- 返回到 Visual Studio,然后单击“停止”从调试模式中退出。
其余的定制选项仅对于 Web 版本的 CrystalReportViewer 控件可用。因此,如果在开发一个网站,请继续浏览 “向网站的报表添加边框”。
如果要开发 Windows 项目,则现在已经完成此教程。