使用DataSet
通过任务五学习,你需要掌握和了解以下内容:
1.掌握DataSet对象及使用
2.完成显示商品信息列表页面的制作
3.制作一个显示商品名称列表的页面
【任务要点】
DataSet对象及使用
【案例一】
完成显示商品信息列表页面的制作
实例运行效果如图下所示。
点击商品分类名称后链接到商品列表页面,如图下所示。

【具体步骤】
(1)在网站中建立一个名为ProductList.aspx的Web窗体。
(2)新一个布局表格,并将GridView控件从工具箱中拖到布局表格的第二行第一列中。
(3)更改GridView的ID属性为grdvProductList。
(4)单击GridView的Columns属性,弹出如下图所示的对话框。

在对话框中添加字段,新添加的字段设置见下表。

完成以上设置后在设计模式下网页界面如下所示。
(5)添加代码,用于当该页面加载的时候,根据传入的商品分类ID检索商品信息。
ProductList.aspx

CategoryList.aspx

【案例二】制作一个显示商品名称列表的页面
实例运行效果如下图所示。

【具体步骤】
(1)在网站中建立一个名为DataSetTest.aspx的页面。
(2)在窗体中添加GridView控件,更改GridView的ID属性为gvTest。
(3)双击设计视图下窗体的空白处,在自动生成的Page_Load()事件中添加代码。

【背景知识】
DataSet对象及使用
1.DataSet对象的概念
DataSet这个对象可以视为一个暂存区(Cache),它可以把从数据库中所查询到的数据保留起来,甚至可以将整个数据库暂存起来。
DataSet是数据在内存中的表示形式。
DataSet对象包含一组DataTable对象和DataRelation对象,DataTable对象中存储数据,由数据行(列)、主关键字、外关键字、约束等组成。DataRelation对象中存储各DataTable之间的关系。这意味着DataSet架构内所有的成员都非常对象化,方便更有弹性地来操作这些对象。
2.向DataSet中填充数据的方法
向DataSet中填充数据的方法有若干种,这些方法可以单独应用,也可以结合应用。主要方法有:
(1)在DataSet对象中以编程方式创建DataTables、DataRelations和Constraints对象,并使用数据填充这些表;
(2)通过DataAdapter对象用现有关系数据源中的数据表填充DataSet;
(3)使用XML加载和保持DataSet内容。
3.DataSet对象的常用方法与数据更新
(1)HasChanges:指出自从填充DataSet或最后一次调用AcceptChanges以后,DataSet中的行是否发生变化,该方法返回一个bool值。
(2)GetChanges:该方法返回一个DataSet对象,实际上是创建了另一个DataSet,该DataSet只包含对数据作出的更改或者是具有可选状态的行。
(3)AcceptChanges:接受DataSet中的所有表的变化,即行的标记都将设置为“未变化”。如果在调用DataAdapter的Update方法之前调用AcceptChanges,Update将不会发现任何标记为“被改动”的行,因此数据源将不会被更新。
(4)RejectChanges:拒绝自从填充DataSet或最后一次调用AcceptChanges以后,DataSet上的所有变化。实际上,这个方法是通过把已改变的行还原为初始值,从而回滚更改操作。
3.DataSet对象的常用方法与数据更新
(1)HasChanges:指出自从填充DataSet或最后一次调用AcceptChanges以后,DataSet中的行是否发生变化,该方法返回一个bool值。
(2)GetChanges:该方法返回一个DataSet对象,实际上是创建了另一个DataSet,该DataSet只包含对数据作出的更改或者是具有可选状态的行。
(3)AcceptChanges:接受DataSet中的所有表的变化,即行的标记都将设置为“未变化”。如果在调用DataAdapter的Update方法之前调用AcceptChanges,Update将不会发现任何标记为“被改动”的行,因此数据源将不会被更新。
(4)RejectChanges:拒绝自从填充DataSet或最后一次调用AcceptChanges以后,DataSet上的所有变化。实际上,这个方法是通过把已改变的行还原为初始值,从而回滚更改操作。
5.DataSet对象与DataAdapter对象间的关系
可以把DataSet对象看成是暂时存放资料的地方,它本身并不具备和数据源联机以及操作数据源的能力。如果想要将数据源的数据取回并存放在DataSet里面的DataTable中,则要通过数据操作组件才办得到。数据操作组件(Managed Provider)就是由Connection、Command、DataAdapter以及DataReader
这四个对象组成,其中DataSet对象和DataAdapter对象的关系最密切,因为DataAdapter对象是帮助DataSet对象和数据源沟通的桥梁;当DataSet对象通过DataAdapter对象来获取数据源的数据时,它会先依照数据在数据源中的架构产生一个DataTable对象,然后将数据源中的数据取回后填入DataRow对象,再将DataRow对象填加到DataTable的Rows集合,直到数据源中的数据取完为止。DataAdapter对象将数据源中的数据取出,并将这些数据都填入自己产生的DataTable对象后,立即将这个DataTable对象加入DataSet对象的DataTables集合,并结束和数据源的联机。

