修改包含 Session 持久性的方法

如果您创建了前一教程介绍的“教程:读取和设置离散参数”并且包含了 Session 持久性,请学习以下过程。否则,继续前进到“修改排除 Session 持久性的方法”部分。

修改包含 Session 持久性的 ConfigureCrystalReports() 方法

  1. 在 ConfigureCrystalReports() 方法中,在声明并实例化 ArrayList 的代码后面创建几行。

  2. 在这几行中,声明两个字符串变量 startDate 和 endDate。

    Dim startDate As String
    Dim endDate As String
    
    string startDate;
    string endDate;
    
  3. 在 Not IsPostBack 条件块中,输入 startDate 和 endDate 变量的默认值。

``` vb
startDate = "8/1/1997"
endDate = "8/31/1997"
```

``` csharp
startDate = "8/1/1997";
endDate = "8/31/1997";
```
  1. 在 Not IsPostBack 条件块中,将 startDate 和 endDate 变量赋给 Session。
``` vb
Session("startDate") = startDate
Session("endDate") = endDate
```

``` csharp
Session["startDate"] = startDate;
Session["endDate"] = endDate;
```
  1. 在 Else 块中,在从 Session 中获得 ArrayList 实例以后,从 Session 获取 startDate 和 endDate 变量。
``` vb
startDate = Session("startDate").ToString()
endDate = Session("endDate").ToString()
```

``` csharp
startDate = Session["startDate"].ToString();
endDate = Session["endDate"].ToString();
```

使用该方法,在任何一种情况下,到达块末尾时均已对日期变量赋值。这遵循了在前一教程中配置的 ArrayList 变量赋值的并行逻辑。
  1. 在调用 SetCurrentValuesForParameterField() 的代码下面,调用 SetDateRangeForOrders() 方法并传递 ParameterFields 实例和 startDate 与 endDate 变量。
``` vb
SetDateRangeForOrders(myParameterFields, startDate, endDate)
```

``` csharp
SetDateRangeForOrders(parameterFields, startDate, endDate);
```
  1. 从“文件”菜单中选择“全部保存”。

修改包含 Session 持久性的 redisplay_Click() 方法

现在将修改 redisplay_Click 事件方法。

  1. 在 redisplay_Click() 事件方法中,在将 ArrayList 实例赋给 Session 的代码行后面创建几行。

  2. 在这几行中,将 orderStartDate TextBox 和 orderEndDate TextBox 的 Text 属性赋给 Session 变量。

    Session("startDate") = orderStartDate.Text
    Session("endDate") = orderEndDate.Text
    
    Session["startDate"] = orderStartDate.Text;
    Session["endDate"] = orderEndDate.Text;
    
  3. 从“文件”菜单中选择“全部保存”。

现在当调用 ConfigureCrystalReports() 方法时,会获取并应用这些 startDate 和 endDate Session 值。

现在即可生成并运行项目,以验证 TextBox 值重置了子报表中的范围参数。