动态填充对象集合

在上一节中,您以编程方式填充了对象集合。在本节中,您将学习如何将信息从网站动态添加到数据源中。在报表中此信息将能够自动更新。

向 Web 窗体添加控件

  1. 在设计视图中打开 Default.aspx 文件。
<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>要在设计视图中打开 ASPX 页,请先打开文件,然后单击窗体底部的“设计”按钮。</p></td>
</tr>
</tbody>
</table>
  1. 单击 CrystalReportViewer 控件,将其选中。

  2. 按键盘上的左箭头键,直到出现闪烁的光标为止,然后按几次 Enter 键。

  3. 从“工具箱”中,将“TextBox”控件拖动到 Web 窗体上。

  4. 从“属性”菜单中,将 ID 设置为“symbol”。

  5. 将第二个“TextBox”控件拖动到 Web 窗体上。将第二个“TextBox”放在第一个“TextBox”的下面。

  6. 从“属性”菜单中,将 ID 设置为“price”。

  7. 将第三个“TextBox”控件拖动到 Web 窗体上。将第三个“TextBox”放在第二个“TextBox”的下面。

  8. 从“属性”菜单中,将 ID 设置为“volume”。

<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>此时,可能会发现在每个“TextBox”控件旁边添加文本是很有用的,这有助于确定哪个控件对应于哪个参数。</p></td>
</tr>
</tbody>
</table>
  1. 接下来,从“工具箱”中,将“Button”控件拖动到 Web 窗体上。将 Button 放在三个 TextBox 控件的下面。

  2. 从“属性”菜单中:

1.  将“Button”的 ID 设置为“addStockInformation”。
2.  将“Button”的“Text”设置为“添加股票信息”。
  1. 最后,单击两次“添加股票信息”按钮。
双击“Button”控件时,将打开代码隐藏类,并且自动生成 addStockInformation\_Click() 事件处理程序。

将信息添加到集合中

在本节中,将为 addStockInformation_Click() 事件处理程序编写代码,以将在 Web 窗体中输入的信息添加到 stockValues 集合中。

  1. 在 addStockInformation_Click() 事件处理程序中,创建并实例化一个新的 Stock 对象。
``` vb
Dim temp As Stock = New Stock()
```

``` csharp
Stock temp = new Stock();
```
  1. 在 addStockInformation_Click() 方法中,创建一个 try/catch 块。
在 Web 窗体中输入的信息为字符串类型。由于 Stock 类中的两个字段是数字类型的,因此需要编写代码将 Web 窗体中的字符串值转换为数值。try/catch 语句有助于防止 Web 应用程序在转换过程中由于类型不匹配错误而崩溃。

``` vb
Try

Catch ex As Exception

End Try
```

``` csharp
try
{
}
catch
{
}
```
  1. 在 Try 块中,将 Web 窗体上的 symbol 字段的值赋给 Stock 对象的 Symbol 属性。

    temp.Symbol = symbol.Text
    
    temp.Symbol = symbol.Text;
    
  2. 在下一行中,将 Web 窗体上的 price 字段的值赋给 Stock 对象的 Price 属性。在赋值之前,将 Web 窗体中的值转换为双精度值。

    temp.Price = CType(price.Text, Double)
    
    temp.Price = Convert.ToDouble(price.Text);
    
  3. 接下来,将 Web 窗体上的volume字段的值赋给 Stock 对象的 Volume 属性。在赋值之前,将 Web 窗体中的值转换为整数。

    temp.Volume = CType(volume.Text, Integer)
    
    temp.Volume = Convert.ToInt32(volume.Text);
    
  4. 在 try/catch 块外面,将 Stock 对象添加到 stockValuesArrayList 中。

``` vb
stockValues.Add(temp)
```

``` csharp
stockValues.Add(temp);
```
  1. 更新在会话中当前保存的 stockValues 值。
``` vb
Session("stockValues") = stockValues
```

``` csharp
Session["stockValues"] = stockValues;
```
  1. 最后,调用 ConfigureCrystalReports() 方法。这会将报表重新绑定到更新的 stockValues 对象集合。
``` vb
ConfigureCrystalReports()
```

``` csharp
ConfigureCrystalReports();
```
  1. 从“生成”菜单中,单击“生成解决方案”。

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

如果没有出现生成错误,则会使用三个默认值将 Default.aspx 页面加载到浏览器中。要添加其它的值,请相应地填充 TextBox 控件,然后单击“添加股票信息”按钮。将动态地更新该报表。

当运行网站时,将使用三个默认值将该报表加载到浏览器窗口中,这些值是在“以编程方式填充对象集合”中以编程方式添加的。报表上面有三个 TextBox 控件和一个 Button 控件。通过使用这些控件,您可以动态地更新对象集合,并查看在报表中反映的此更新的结果。