在ASP.NET 2.0中操作数据之六十六:在TableAdapters中(2)

/uploads/allimg/200612/1HK91V5_0.png


图5:指定存储过程返回Tabular Data

  然后需要指定采用的方法模式以及方法的名称.同时选中Fill a DataTable” 和 “Return a DataTable”项.将这2个方法重命名为FillByCategoryID和 GetProductsByCategoryID. 点Next,确认无误的话,再点Finish完成设置。

https://img.jbzj.com/file_images/article/201605/201605190901556.png


图6:将方法命名为FillByCategoryID 和 GetProductsByCategoryID

  注意:我们刚才添加FillByCategoryID 和 GetProductsByCategoryID方法,执行一个int类型的输入参数,它由@CategoryID传递进来。如果你要改动Products_SelectByCategory存储过程的参数的话,你也必须更新这些TableAdapter方法的参数.就像在前一篇文章探讨的一样,要么手动添加或删除参数集里的参数,要么再次运行TableAdapter向导.

第三步:在BLL层添加一个GetProductsByCategoryID(categoryID)方法

设置完DAL层的GetProductsByCategoryID方法后,下一步我们将在业务逻辑层添加方法以调用该方法.打开ProductsBLLWithSprocs class类的文件,添加如下方法:

[System.ComponentModel.DataObjectMethodAttribute (System.ComponentModel.DataObjectMethodType.Select, false)] public NorthwindWithSprocs.ProductsDataTable GetProductByCategoryID(int categoryID) { return Adapter.GetProductsByCategoryID(categoryID); }

  该BLL层方法仅仅通过ProductsTableAdapter的 GetProductsByCategoryID()方法来返回ProductsDataTable。由于使用了DataObjectMethodAttribute属性,我们使用ObjectDataSource的设置数据源向导时,该方法会出现在SELECT标签的下拉列表中.

第四步:展示产品

  为测试新添加的Products_SelectByCategoryID存储过程,以及DAL 和 BLL层里的对应的方法, 我们将创建一个ASP.NET页面,该页面包含一个DropDownList控件以及一个 GridView控件.DropDownList控件列出数据库里所有的category,当选定某个category时,我们将在GridView里将属于该category的所有product展示出来.

  注意:我们在前面的文章里用DropDownList控件创建过主/从报表,更多细节请参考第7章《使用DropDownList过滤的主/从报表

  打开AdvancedDAL文件夹里的ExistingSprocs.aspx页面,从工具箱里拖一个DropDownList控件到页面,设置其ID为Categories,AutoPostBack属性为true.接下来,在其智能标签里将其绑定到一个名为CategoriesDataSource的ObjectDataSource控件.设置该控件调用CategoriesBLL class类的GetCategories方法,而在UPDATE, INSERT, 以及DELETE标签里选“(None)”.

/uploads/allimg/200612/1HK952K_0.png


图7:调用CategoriesBLL Class类的GetCategories方法

/uploads/allimg/200612/1HK92248_0.png


图8:在UPDATE, INSERT,和DELETE标签里选“(None)”

完成ObjectDataSource向导后,我们设置DropDownList控件显示的是CategoryName列,而传递的Value值为CategoryID列.此时,DropDownList控件和ObjectDataSource控件的声明代码看起来和下面的差不多:

<asp:DropDownList runat="server" AutoPostBack="True" DataSourceID="CategoriesDataSource" DataTextField="CategoryName" DataValueField="CategoryID"> </asp:DropDownList> <asp:ObjectDataSource runat="server" OldValuesParameterFormatString="original_{0}" SelectMethod="GetCategories" TypeName="CategoriesBLL"> </asp:ObjectDataSource>

  接下来,在DropDownList控件下面放一个GridView控件,社其ID为ProductsByCategory ,并将其绑定到一个名为ProductsByCategoryDataSource的ObjectDataSource控件,该控件调用ProductsBLLWithSprocs class类的GetProductsByCategoryID(categoryID)方法。由于该GridView控件仅仅用来展示数据,因此,在UPDATE, INSERT, 和DELETE标签里选“(None)”并点Next.

/uploads/allimg/200612/1HP04311_0.png


图9:设置ObjectDataSource控件ProductsBLLWithSprocs Class类

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

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