在上一节中,您以编程方式填充了对象集合。在本节中,您将学习如何将信息从网站动态添加到数据源中。在报表中此信息将能够自动更新。
向 Web 窗体添加控件
- 在设计视图中打开 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>
单击 CrystalReportViewer 控件,将其选中。
按键盘上的左箭头键,直到出现闪烁的光标为止,然后按几次 Enter 键。
从“工具箱”中,将“TextBox”控件拖动到 Web 窗体上。
从“属性”菜单中,将 ID 设置为“symbol”。
将第二个“TextBox”控件拖动到 Web 窗体上。将第二个“TextBox”放在第一个“TextBox”的下面。
从“属性”菜单中,将 ID 设置为“price”。
将第三个“TextBox”控件拖动到 Web 窗体上。将第三个“TextBox”放在第二个“TextBox”的下面。
从“属性”菜单中,将 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>
接下来,从“工具箱”中,将“Button”控件拖动到 Web 窗体上。将 Button 放在三个 TextBox 控件的下面。
从“属性”菜单中:
1. 将“Button”的 ID 设置为“addStockInformation”。
2. 将“Button”的“Text”设置为“添加股票信息”。
- 最后,单击两次“添加股票信息”按钮。
双击“Button”控件时,将打开代码隐藏类,并且自动生成 addStockInformation\_Click() 事件处理程序。
将信息添加到集合中
在本节中,将为 addStockInformation_Click() 事件处理程序编写代码,以将在 Web 窗体中输入的信息添加到 stockValues 集合中。
- 在 addStockInformation_Click() 事件处理程序中,创建并实例化一个新的 Stock 对象。
``` vb
Dim temp As Stock = New Stock()
```
``` csharp
Stock temp = new Stock();
```
- 在 addStockInformation_Click() 方法中,创建一个 try/catch 块。
在 Web 窗体中输入的信息为字符串类型。由于 Stock 类中的两个字段是数字类型的,因此需要编写代码将 Web 窗体中的字符串值转换为数值。try/catch 语句有助于防止 Web 应用程序在转换过程中由于类型不匹配错误而崩溃。
``` vb
Try
Catch ex As Exception
End Try
```
``` csharp
try
{
}
catch
{
}
```
在 Try 块中,将 Web 窗体上的 symbol 字段的值赋给 Stock 对象的 Symbol 属性。
temp.Symbol = symbol.Texttemp.Symbol = symbol.Text;在下一行中,将 Web 窗体上的 price 字段的值赋给 Stock 对象的 Price 属性。在赋值之前,将 Web 窗体中的值转换为双精度值。
temp.Price = CType(price.Text, Double)temp.Price = Convert.ToDouble(price.Text);接下来,将 Web 窗体上的volume字段的值赋给 Stock 对象的 Volume 属性。在赋值之前,将 Web 窗体中的值转换为整数。
temp.Volume = CType(volume.Text, Integer)temp.Volume = Convert.ToInt32(volume.Text);在 try/catch 块外面,将 Stock 对象添加到 stockValuesArrayList 中。
``` vb
stockValues.Add(temp)
```
``` csharp
stockValues.Add(temp);
```
- 更新在会话中当前保存的 stockValues 值。
``` vb
Session("stockValues") = stockValues
```
``` csharp
Session["stockValues"] = stockValues;
```
- 最后,调用 ConfigureCrystalReports() 方法。这会将报表重新绑定到更新的 stockValues 对象集合。
``` vb
ConfigureCrystalReports()
```
``` csharp
ConfigureCrystalReports();
```
从“生成”菜单中,单击“生成解决方案”。
从“调试”菜单中,单击“开始调试”。
如果没有出现生成错误,则会使用三个默认值将 Default.aspx 页面加载到浏览器中。要添加其它的值,请相应地填充 TextBox 控件,然后单击“添加股票信息”按钮。将动态地更新该报表。
当运行网站时,将使用三个默认值将该报表加载到浏览器窗口中,这些值是在“以编程方式填充对象集合”中以编程方式添加的。报表上面有三个 TextBox 控件和一个 Button 控件。通过使用这些控件,您可以动态地更新对象集合,并查看在报表中反映的此更新的结果。