在本演练中,您将使用 Visual C# 或 Visual Basic 编写一个 Web 窗体应用程序,然后集成一个为您提供 10% 购买折扣的业务对象组件。您将这个业务对象创建为一个 Visual C# 或 Visual Basic 类,该类通过计算特定书籍的优惠价格来实现业务规则。
创建 Web 应用程序项目
在本节中,创建表示应用程序的用户界面的 Visual C# 或 Visual Basic Web 应用程序项目。在 Web 窗体页上,将放置 DataSet、DataGrid 和 DataView 以查看数据库中的特定表。
您还将在创建包含数据源的数据访问对象的位置添加组件。
创建 Web 窗体
在“文件”菜单上,单击“新建”,然后单击“项目”。
将出现“新建项目”对话框。
在“项目类型”窗格中,单击“Visual Basic 项目”或“Visual C# 项目”,并在“模板”窗格中选择“ASP.NET Web 应用程序”。
通过更改“位置”框中的默认名称(如将 http://localhost/WebApplication1 更改为 http://localhost/MyWebForm)将应用程序命名为 MyWebForm。
单击“确定”按钮。
应用程序向导将创建必要的项目文件,包括下列文件:
WebForm1.aspx ― 包含 Web 窗体的可视化表示形式。
WebForm1.aspx.cs 或 WebForm1.aspx.vb ― 代码隐藏文件,包含用于事件处理和其他编程任务的代码。若要在解决方案资源管理器中查看此文件,请单击“显示所有文件”图标,然后展开 WebForm1.aspx 节点。
Web 窗体文件
注意
如果解决方案资源管理器没有打开,请在“视图”菜单上单击“解决方案资源管理器”。
有关创建 Web 应用程序项目的更多详细信息,请参见创建 Web 项目。
添加组件
在解决方案资源管理器中,右击项目名称。
在快捷菜单上单击“添加”,然后单击“添加组件”。
出现“添加新项”对话框,并且默认情况下将选中右窗格中的“组件类”。
接受默认名称 (Component1) 并单击“打开”。
除非为组件选择其他名称,否则这将在项目中创建名为 Component1.cs 或 Component1.vb 的新文件,具体取决于应用程序语言。组件设计器在 Component1.cs 或 Component1.vb 上打开设计视图。
创建数据访问组件
数据集可以用于将数据值绑定到传输给客户端的 HTML。它既可以在 Web 窗体本身也可以在组件上创建。为模拟实际情况,将在组件上创建它。还将编写必要的代码以便用数据库中的数据填充数据集。
添加和配置数据源
在“视图”菜单上单击“工具箱”。
从工具箱的“数据”选项卡中,将 sqlDataAdapter 拖到组件设计器表面。
“数据适配器配置向导”出现。
单击“下一步”前进到“选择您的数据连接”页,然后单击“新建连接”。
即会出现“数据链接属性”对话框。
在“数据链接属性”对话框的“连接”选项卡中:
输入安装了 pubs 数据库的服务器的名称。
输入服务器的登录信息。
从数据库列表中选择 pubs。
单击“测试连接”按钮测试数据链接。
单击“确定”返回到向导。
数据连接的名称出现在下拉列表中。
注意
如果不知道 SQL Server pubs 数据库的用户名和密码,请与数据库管理员联系。
数据链接属性
单击“下一步”前进到“选择查询类型”页。
选择“使用 SQL 语句”,然后单击“下一步”。
在“生成 SQL 语句”页中单击“查询生成器”。
在“添加表”对话框的“表”选项卡中,单击“titles”,单击“添加”,然后单击“关闭”。
这将“titles”表添加到 SQL 查询中。
在“查询生成器”对话框中,如下图所示,选择“title_id”、“title”、“price”、“notes”和“pubdate”复选框,然后单击“确定”生成 SQL 语句并返回到“数据适配器配置向导”。
查询生成器
“生成 SQL 语句”页显示生成的 SQL 语句。
单击“完成”退出“数据适配器配置向导”并将数据源连接到“titles”表。将下列对象添加到组件设计器表面:
sqlDataAdapter1
sqlConnection1
另一种方法是,可以使用服务器资源管理器同时创建 sqlDataAdapter1 和 sqlConnection1 对象。为此,展开“SQL Server”树以显示服务器、pubs 数据库和 titles 表,如下图所示。展开 titles 并选择所需要的列,然后将它们拖到组件设计器表面。
服务器资源管理器
可以在 Component1.cs 文件的 InitializeComponent 方法(或 Component1.vb 文件的 InitializeComponent 子例程)中查看生成的代码。为此,通过在解决方案资源管理器中右击 Component1.cs(或 Component1.vb)切换到代码视图,然后在快捷菜单中单击“查看代码”。
单击“文件”菜单上的“全部保存”保存项目。
生成和填充数据集
如果组件设计器不可见,则请在解决方案资源管理器中双击文件 Component1.cs(或 Component1.vb)。
从“数据”菜单中,单击“生成数据集”。
“生成数据集”对话框出现。
如果“新建”单选按钮尚未选定,请选定它。在对应的文本框中输入名称,如 myDataSet。
确保未选中“将此数据集添加到设计器”复选框,并单击“确定”。
文件 myDataSet.xsd 出现在解决方案资源管理器中。
如果在解决方案资源管理器中双击 myDataSet.xsd,可查看描述 myDataSet 的 XML 架构和代码。注意,“数据集”和“XML”选项卡位于 XML 设计器表面的左下角。
数据集架构
绑定 DataGrid
在本节中,将向 Web 窗体页添加数据集,用数据填充它并将其绑定到 DataGrid。
向窗体添加数据集
在解决方案资源管理器中,双击文件 WebForm1.aspx 以选择 Web 窗体页。
在“视图”菜单上单击“工具箱”。
将一个 DataSet 从工具箱的“数据”选项卡拖到 Web 窗体设计器表面。
出现“添加数据集”对话框。
如果尚未选中“TypedDataSet”,请选中它。
从下拉列表中选择数据集的名称 (MyWebForm.myDataSet) 并单击“确定”。
这将数据集 myDataSet1 添加到 Web 窗体设计器表面的非可视部分。
添加数据集
用数据填充数据集
在解决方案资源管理器中,右击 Component1.cs(或 Component1.vb),然后从快捷菜单中选择“查看代码”切换到组件代码视图。
将下列方法(或子例程)添加到 Component1 类,如下所示:
// C#
public class Component1 : System.ComponentModel.Component
{
...
...
// Add the following code:
public void FillDataSet(myDataSet dSet)
{
sqlDataAdapter1.Fill(dSet);
}
// End of the new code.
...
...
}
'Visual Basic
Public Class Component1
Inherits System.ComponentModel.Component
...
...
' Add the following code:
Public Sub FillDataSet(ByVal dSet As myDataSet)
sqlDataAdapter1.Fill(dSet)
End Sub
' End of the new code.
...
...
End Class
通过在解决方案资源管理器中右击文件 WebForm1.aspx,然后从快捷菜单中选择“查看代码”,来切换到 Web 窗体代码视图。
这将打开代码隐藏文件,即 WebForm1.aspx.cs(或 WebForm1.aspx.vb)。
在 WebForm1 类中的顶层声明一个组件对象,如下所示:
// C#
public class WebForm1 : System.Web.UI.Page
{
// Add the following line:
protected Component1 myComponent = new Component1();
...
' Visual Basic
Public Class WebForm1
Inherits System.Web.UI.Page
' Add the following line:
Protected myComponent As New Component1
...
修改 Page_Load 方法(或 Page_Load 子例程)以调用 FillDataSet(),如下所示:
// C#
private void Page_Load (object sender, System.EventArgs e)
{
// Add the following code:
if (! IsPostBack)
{
myComponent.FillDataSet(myDataSet1);
}
// End of the new code.
}
' Visual Basic