ASP.NET 2.0中的数据操作之八:使用两个DropDownLis

  在前面的指南中我们研究了如何显示一个简单的主/从报表, 该报表使用DropDownList和GridView控件, DropDownList填充类别,GridView显示选定类别的产品. 这类报表用于显示具有一对多关系的记录时非常合适, 同时它也可以很容易的被扩展以显示多个一对多关系的数据. 比如, 一个订单系统应该包含表示客户,订单和订单明细的表. 一个客户也许有多个订单,每个订单又包含多条订单项. 这样的数据可以使用两个DropDownList和一个GridView呈现给用户. 第一个DropDownList应该包含数据库中所有客户的列表, 第二个DropDownList的内容是选定客户的订单. GridView用于列出所选定订单的订单明细项.
Step 1: 创建DropDownList并使用类别数据填充

  我们的第一个目标是添加一个能够列出类别的DropDownList. 这些步骤在前面的指南中已经做详细的分析, 但为了保持本篇指南的完整性有必要在这里简单概括一下.

  打开Filtering文件夹中的MasterDetailsDetails.aspx, 在页面上添加一个DropDownList, 设置它的ID为Categories,然后单击智能标记上的 Configure Data Source链接. 在数据源配置向导中选择新增一个数据源.

/uploads/allimg/200612/1P05255Q_0.png

图 1: 为DropDownList增加一个新的数据源

  当然, 新的数据源应该是ObjectDataSource. 把新的ObjectDataSource命名为CategoriesDataSource并且让他调用CategoriesBLL对象的GetCategories()方法

/uploads/allimg/200612/1P05230K_0.png

图 2: 选择使用CategoriesBLL类

/uploads/allimg/200612/1P05X5L_0.png

图3: 配置ObjectDataSource使用GetCategories()方法

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

/uploads/allimg/200612/1P0539B8_0.png

图4: 指定DropDownList 显示CategoryName列并且使用CategoryID列作为数据项的值

  这时,我们就有了一个使用Categories表中的记录来填充的DropDownList控件. 当用户在DropDownList中选择一个新的类别时, 我们需要一次回发,这样可以刷新在第二步中我们要创建的产品DropDownList控件. 所以, categoriesDropDownList的智能标记上选中AutoPostBack选项.

/uploads/allimg/200612/1P0539255_0.png

图 5: 选中Categories DropDownList 的AutoPostBack

Step 2: 在第二个DropDownList 中显示选中类别的产品

  Categories DropDownList完成后, 下一步就需要一个显示属于选定类别的产品的DropDownList了. 要完成这个功能, 再增加一个DropDownList控件并命名为ProductsByCategory. 与Categories DropDownList一样, 为ProductsByCategory DropDownList创建一个新的ObjectDataSource并命名为ProductsByCategoryDataSource.

/uploads/allimg/200612/1P0532442_0.png

图 6: 为ProductsByCategory DropDownList添加新数据源

/uploads/allimg/200612/1P0594093_0.png

图7: 创建一个新的 ObjectDataSource 并命名为ProductsByCategoryDataSource

  由于ProductsByCategory DropDownList 需要显示属于选定类别的产品, 让ObjectDataSource 调用ProductsBLL对象的GetProductsByCategoryID(categoryID)方法.

/uploads/allimg/200612/1P054NI_0.png

图8: 选择使用ProductsBLL类

/uploads/allimg/200612/1P0546493_0.png

图9: 配置ObjectDataSource 使用GetProductsByCategoryID(categoryID)方法

  在向导的最后一步需要指定categoryID的值. 我们把Categories DropDownList的已选择的数据项项作为该参数值.

/uploads/allimg/200612/1P05595b_0.png

图10: 使用categoryID参数从Categories DropDownList接收值

  ObjectDataSource配置完成后, 剩下的就是指定DropDownList要显示的字段和作为值的字段了. 设置为显示ProductName并把ProductID做为值字段

/uploads/allimg/200612/1P1001558_0.png

图11: 指定 DropDownList数据项的文本和值使用的数据源字段

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

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