使用ASP.NET中的GridView和ObjectDataSource

开发 后端
本文介绍了如何在asp.net 2.0中通过使用GridView和ObjectDataSource空间添加产品表格。

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

选择GetProductsByCategoryID(categoryID) 方法  

GridView和ObjectDataSource: 选择GetProductsByCategoryID(categoryID) 方法

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

categoryID 参数设置为Categories DropDownList的值 

GridView和ObjectDataSource: categoryID 参数设置为Categories DropDownList的值

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

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

• DropDownList后面添加一个按钮控件.  设置他的Text 属性为”刷新”或类似的文本.使用这种方法, 用户需要选择一个新的类别然后单击该按钮.单击按钮将会引起一次回发并更新GridView显示已选择类别的产品.图9和图10演示了运行后的主/从报表.

第一次访问该页面时, 显示Beverage 的产品  

GridView和ObjectDataSource: 第一次访问该页面时, 显示Beverage 的产品

选择一个新的产品,自动引起一次回发并更新GridView  

GridView和ObjectDataSource: 选择一个新的产品,自动引起一次回发并更新GridView 

增加”选择类别”列表项

第一次访问FilterByDropDownList.aspx 页时,类别DropDownList中第一个数据项(Beverages)默认是选中的, GridView中显示的也是beverage类别的产品. 比起显示第一个类别的产品, 我们可以为DropDownList 添加一个默认选择项,比如 “—选择类别 --”,这样也许更友好一些.要给DropDownList增加一个新的数据项, 在属性窗口中单击Items 属性的省略号图标. 添加一个新的数据项并设置Text 为“—选择类别--”设置Value 为-1.

增加 “—选择类别--” 数据项 

GridView和ObjectDataSource:  增加 “—选择类别--” 数据项

除了上面的方法,你还可以使用下面的标记性语言(markup)为DorpDownList添加一个数据项:

  1. < asp:DropDownList ID="categories" runat="server" AutoPostBack="True" DataSourceID="categoriesDataSource" 
  2.     DataTextField="CategoryName" DataValueField="CategoryID" EnableViewState="False">  
  3.     < asp:ListItem Value="-1">-- Choose a Category --< /asp:ListItem>  
  4. < /asp:DropDownList> 

另外,我们需要把DropDownList控件的AppendDataBoundItems属性设置为True,因为数据源控件中的类别数据绑定到DropDownList 时, 将会覆盖所有的手工增加的列表项,除非你的AppendDataBoundItems属性设置True.

设置AppendDataBoundItems 属性为True 

GridView和ObjectDataSource: 设置AppendDataBoundItems 属性为True

这样,第一次访问该页面时, ”—选择类别—“数据项是被选中并且不显示任何产品.

页面第一次加载时不显示产品 

GridView和ObjectDataSource: 页面第一次加载时不显示产品

没有显示产品的原因是由于”—选择类别—“项被选中,该数据项的值是-1, 而数据库中不存在CategoryID为-1的产品. 如果这正是你想要的那现在就可以打完收工了, 如果你希望在"--选择类别--"项选中时显示所有类别的产品,在ProductsBLL类中自定义GetProductsByCategoryID(categoryID)方法,如果categoryID参数值小于0则调用GetProducts()方法:

  1. public Northwind.ProductsDataTable GetProductsByCategoryID(int categoryID)  
  2. {  
  3.     if (categoryID <  0)  
  4.         return GetProducts();  
  5.     else 
  6.         return Adapter.GetProductsByCategoryID(categoryID);  

在这里使用的技巧与在后面的[声明式语法]教程中显示全部供应商的相似,尽管在这个例子中我们使用了-1而不是使用null来指示是否应该获取全部记录. 这是因为GetProductsByCategoryID(categoryID)中的categoryID参数需要一个整型值,与之相反,在[声明式语法]教程中我们传入了一个字符串参数.

图14 显示了当”—选择类别—“项选中时FilterByDropDownList.aspx页面的截屏. 此时,所有类型的产品默认全部显示, 用户可以通过选择特定的类别来缩小显示范围

默认情况下显示所有产品 

GridView和ObjectDataSource: 默认情况下显示所有产品

【编辑推荐】

  1. ASP.NET 2.0数据教程:给站点添加aspx页面
  2. ASP.NET 2.0数据教程:创建母版页
  3. ASP.NET跨页面传值的技巧
  4. ASP.NET 2.0数据教程:给DAL添加定制编码
  5. ASP.NET 2.0数据教程:完成数据访问层
责任编辑:book05 来源: 博客堂
相关推荐

2009-07-24 15:35:00

ASP.NET Gri

2009-07-27 08:51:24

ObjectDataS

2009-07-27 09:01:44

ObjectDataS

2009-07-20 18:02:48

GridView控件ASP.NET 2.0

2009-07-27 15:58:25

添加GridView

2009-07-24 16:15:00

扩展ASP.NET G

2009-07-28 03:42:00

ASP.NET Gri

2009-06-12 09:24:34

ASP.NET窗体ASP.NET MVC

2009-08-14 13:20:29

ASP.NET Gri

2009-07-27 16:22:54

GridView选择行

2009-07-27 16:09:05

GridView显示数

2009-08-04 17:20:37

PostBack和ViASP.NET

2009-07-27 12:22:03

ASP.NET和ASPASP.NET入门教程

2009-07-29 16:08:07

ASP和ASP.NET

2009-08-03 18:29:31

GridView与Da

2009-01-16 13:17:16

AjaxASP.NET.NET

2009-01-08 10:20:56

AutoCompletAjaxASP.NET

2009-07-30 12:19:32

ASP.NET中使用A

2009-07-23 16:44:51

AdRotator控件ASP.NET

2009-07-20 15:39:32

ASP.NET缓存
点赞
收藏

51CTO技术栈公众号