Share via


在报表中搜索

在本节中,您要学习如何在绑定到 CrystalReportViewer 控件的 Crystal 报表中搜索文本。

需要一个用于键入所需搜索字符串的 TextBox 控件,一个用于在报表中搜索的 Button 控件,以及一个用于通知搜索是否成功的 Label 控件。

添加用于“搜索”选项的 TextBox、Button 和 Label 控件

  1. 在“设计”视图中打开 Web 或 Windows 窗体。
  2. 从“工具箱”中将一个“TextBox”控件拖到表的第五行第一列中。
  3. 选择“TextBox”控件,然后从“属性”窗口执行以下操作:
    1. 将“ID”(或“Name”)设置为“searchText”。
    2. 将“Text”属性设置为空白。
  4. 从“工具箱”中将一个“Button”控件拖到表的第五行第二列中。
  5. 选择“Button”控件,然后从“属性”窗口执行以下操作:
    1. 将“ID”(或“Name”)设置为“search”。
    2. 将“Text”设置为“搜索文本”。
  6. 从“工具箱”中将一个“Label”控件拖到表的第五行第三列中。
  7. 将“ID”(或“Name”)设置为“message”。
  8. 将“Text”设置为空白。
  9. 将“ForeColor”设置为“红色”。
  10. 创建 MessageConstants 类,以将针对搜索的标准应答消息存储为字符串常量。
    Note注意

    有关创建此类的说明,请参见“添加错误消息类”

为网站编写 search_Click() 事件处理程序的代码

接下来,必须在搜索 Button 控件中调用 SearchAndHighlightText() 方法。

Note注意

与 Windows 项目相比,SearchAndHighlightText() 方法的行为对于网站并不相同。

由于方法在网站和 Windows 项目中的行为不同,因此,要为网站或 Windows 项目完成以下相应的步骤。

  1. 双击搜索 Button 控件。
即会出现报表的代码隐藏类,显示已经自动生成 search\_Click() 事件处理程序。
  1. 获取在“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 类可访问,必须在代码隐藏类的顶部包含 &quot;Imports&quot; [Visual Basic] 或 &quot;using&quot; [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);
```
  1. 创建一个条件块,测试搜索是否成功。

    If Not mySearchResult Then
    
    Else
    
    End If
    
    if(!searchResult)
    {
    }
    else
    {
    }
    
  2. 在 If 块内,将 MessageConstants.SUCCESS 常量赋给 messageLabel 的 Text 属性。

    message.Text = MessageConstants.SUCCESS
    
    message.Text = MessageConstants.SUCCESS;
    
  3. 在 Else 块内,将 MessageConstants.FAILURE 常量赋给 messageLabel 的 Text 属性。

    message.Text = MessageConstants.FAILURE
    
    message.Text = MessageConstants.FAILURE;
    

为 Windows 项目编写 search_Click() 事件处理程序的代码

跳过以下针对 Windows 项目的过程而执行其后的测试过程。

  1. 双击搜索 Button 控件。
即会出现报表的代码隐藏类,显示已经自动生成 search\_Click() 事件处理程序。
  1. 获取在“TextBox”控件中键入的文本,然后将值传递到“CrystalReportViewer”控件的 SearchAndHighlightText() 方法。将方法调用赋给布尔值变量。
``` vb
Dim mySearchResult As Boolean = myCrystalReportViewer.SearchAndHighlightText(searchText.Text)
```

``` csharp
bool searchResult = crystalReportViewer.SearchAndHighlightText(searchText.Text);
```
  1. 创建一个条件块,测试搜索是否成功。

    If mySearchResult Then
    
    Else
    
    End If
    
    if(searchResult)
    {
    }
    else
    {
    }
    
  2. 在 If 块内,将 MessageConstants.SUCCESS 常量赋给 messageLabel 的 Text 属性。

    message.Text = MessageConstants.SUCCESS
    
    message.Text = MessageConstants.SUCCESS;
    
  3. 在 Else 块内,将 MessageConstants.FAILURE 常量赋给 messageLabel 的 Text 属性。

    message.Text = MessageConstants.FAILURE
    
    message.Text = MessageConstants.FAILURE;
    

测试“搜索”Button 控件

  1. 从“生成”菜单中,单击“生成解决方案”。

  2. 如果生成过程中出错,请立即纠正。

  3. 从“调试”菜单中,单击“开始”。

即会显示图表报表以及已添加的所有控件。
  1. 在“searchTextTextBox”中输入China,然后单击“搜索”。
页面会重新加载,突出显示搜索结果并显示成功消息。
  1. 在“searchTextTextBox”中输入 hello,然后单击“搜索”。
页面会重新加载,并显示失败消息。
  1. 返回到 Visual Studio,然后单击“停止”从调试模式中退出。

其余的定制选项仅对于 Web 版本的 CrystalReportViewer 控件可用。因此,如果在开发一个网站,请继续浏览 “向网站的报表添加边框”

如果要开发 Windows 项目,则现在已经完成此教程。