编写采用一定排序顺序的按钮事件

在此过程中,您需要在事件方法中对报表的 ReportDocument 对象模型进行编程,并将一个事件方法中的排序顺序设置为升序,另一个设置为降序。

在 sortOrderDescending_Click 事件方法中对报表的 ReportDocument 对象模型进行编程

  1. 打开代码隐藏类,找到 sortOrderDescending_Click() 事件方法。

  2. 在该事件方法中,从报表实例的 DataDefinition 属性中获取 SortFields 属性,并将其赋给 SortFields 索引类的一个实例。

    Dim mySortFields As SortFields = hierarchicalGroupingReport.DataDefinition.SortFields
    
    SortFields sortFields = hierarchicalGroupingReport.DataDefinition.SortFields;
    
  3. 从 SortFields 索引类中获取第一个 SortField 实例,并将其赋给名为 firstSortField 的变量。

<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>SortFields 索引类从 0 开始。</p></td>
</tr>
</tbody>
</table>

``` vb
Dim firstSortField As SortField = mySortFields(0)
```

``` csharp
SortField firstSortField = sortFields[0];
```
  1. 使用 SortDirection 枚举的 DescendingOrder 选择项,将 firstSortField 的 SortDirection 属性设置为降序。

    firstSortField.SortDirection = SortDirection.DescendingOrder
    
    firstSortField.SortDirection = SortDirection.DescendingOrder;
    
  2. 现在将此报表(已在 ReportDocument 对象模型中修改其排序)重新赋给 CrystalReportViewer 控件的 ReportSource 属性。

    myCrystalReportViewer.ReportSource = hierarchicalGroupingReport
    
    crystalReportViewer.ReportSource = hierarchicalGroupingReport;
    

接下来,输入 sortOrderAscending_Click() 事件方法的代码。除 SortDirection 属性设置之外,其余代码均与上一个过程的代码相同。

在 sortOrderAscending_Click 事件方法中对报表的 ReportDocument 对象模型进行编程

  1. 打开代码隐藏类,找到 sortOrderAscending_Click() 事件方法。

  2. 在该事件方法中,从报表实例的 DataDefinition 属性中获取 SortFields 属性,并将其赋给 SortFields 索引类的一个实例。

    Dim mySortFields As SortFields = hierarchicalGroupingReport.DataDefinition.SortFields
    
    SortFields sortFields = hierarchicalGroupingReport.DataDefinition.SortFields;
    
  3. 从 SortFields 索引类中获取第一个 SortField 实例,并将其赋给名为 firstSortField 的变量。

<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>SortFields 索引类从 0 开始。</p></td>
</tr>
</tbody>
</table>

``` vb
Dim firstSortField As SortField = mySortFields(0)
```

``` csharp
SortField firstSortField = sortFields[0];
```
  1. 使用 SortDirection 枚举的 AscendingOrder 选择项,将 firstSortField 实例的 SortDirection 属性设置为升序。

    firstSortField.SortDirection = SortDirection.AscendingOrder
    
    firstSortField.SortDirection = SortDirection.AscendingOrder;
    
  2. 现在将此报表(已在 ReportDocument 对象模型中修改其排序)重新赋给 CrystalReportViewer 控件的 ReportSource 属性。

    myCrystalReportViewer.ReportSource = hierarchicalGroupingReport
    
    crystalReportViewer.ReportSource = hierarchicalGroupingReport;
    

这样就完成了在每种事件方法中对报表的 ReportDocument 对象模型的编程。在下一节中,需要测试这些排序更改是否有效,并测试在未应用 Session 持久性时是否能够保持这些更改。