ASP.NET 2.0中的数据操作之七:使用DropDownList过滤的

  主/从报表是一种很常见的报表, 这类报表中首先会显示一些主记录. 然后用户可以深入(追溯)某条主记录来查看该主记录的详情. 主/从报表是显示一对多关系的理想选择, 比如一个报表显示所有的产品类别,然后根据用户选择的特定类别显示与之关联的产品. 另外, 主/从表在显示”宽”表(有很多列的表)的详细信息时也很有用.例如主/从报表的主表部分显示数据库中产品表的产品名称和单价, 具体到某一个产品时再显示其他的产品字段(类别,供应商,单位数量,等等).

  有很多方法可以实现主/从报表. 在这篇及接下来的3篇教程中我们将看到各种各样的主/从报表. 在本篇中我们会看到如何在DropDownList控件中显示主记录以及在GridView中显示选中数据项的详细信息. 具体来说, 在本篇中主/从报表将会列出产类别及产品信息.

Step 1: 在DropDownList 中显示类别

  我们的主/从报表将会在DropDownList中列出类别, 根据选择的列表项在页面上的GridView显示相关的产品. 我们的第一任务, 就是要在DropDownList中显示类别. 打开Filtering文件夹中的FilterByDropDownList.aspx, 从工具箱中将一个DorpDownList控件拖放在该页上, 设置它的ID属性为Categories. 然后, 单击”DropDownList 任务”上的”选择数据源”链接. “选择数据源”向导启动.

/uploads/allimg/200612/1K1214963_0.png

图1:指定DropDownList控件的数据源

添加一个数据源控件并命名为CategoriesDataSource,该控件将会调用CategoriesBLL 类的 GetCategories().

/uploads/allimg/200612/1K12235C_0.png

图2: 添加一个数据源控件并命名为CategoriesDataSource

/uploads/allimg/200612/1K1229243_0.png

图3: 选择使用CategoriesBLL 类

/uploads/allimg/200612/1K12295V_0.png

图4: 配置数据源控件使用GetCategories() 方法

  配置完ObjectDataSource后还需要指定要在DropDownList中显示的数据字段,以及作为数据项的值(value for the list item)的数据字段.我们指定CategoryName为要显示的列, 指定CategoryID为数据项的值字段

/uploads/allimg/200612/1K12253W_0.png

图5: 指定CategoryName为要显示的列, CategoryID作为数据项的值。

  这时,我们就有了一个使用Categories表中的记录来填充的DropDownList控件.图6显示了在浏览器中所看到的目前为止我们所做的工作.

/uploads/allimg/200612/1K1264L0_0.png

图6:DropDownList列出了当前的类别

Step 2: 添加产品表格

在主/从报表的最后一步是列出与选定的类别相关联的产品. 要实现该功能,在页面上增加一个GridView控件然后创建一个数据源控件(ObjectDataSource)并命名为productsDataSource.让productsDataSource控件从ProductsBLL类的GetProductsByCategoryID(categoryID)获取数据.

/uploads/allimg/200612/1K1234935_0.png

图7: 选择GetProductsByCategoryID(categoryID) 方法

选择该方法之后,数据源控件(ObjectDataSource)向导会提示我们定义该方法的categoryID参数值. 要使用categories DorpDownList中选择的值, 设置参数源为Control, 设置ControlID为Categories.

/uploads/allimg/200612/1K1233a9_0.png

图8: categoryID 参数设置为Categories DropDownList的值

花一点时间在浏览器中检查一下我们前面所做的工作. 第一次访问页面时,那些属于已选择类别(Beverages)的产品已经显示出来了(如图9), 但是当改变DropDownList时并没有更新产品数据.这是由于必须引发一次回发(postback)GridView才会更新.有两个方法可以实现(两种方法都不需要写任何代码):

· 设置 categories 的AutoPostBack 属性为 True. (你可以选中DropDownList's smart tag 上的Enable AutoPostBack 选项.) 这样,只要用户改变了DropDownList的选择项都会引起一次回发. 所以, 当用户在DropDownList中选择了一个新的类别就会引起一次回发,GridView 也会随着新选择的类别更新产品数据. (在本教程中我们使用此方法.)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wjwwjz.html