返回“ASP.NET 2.0数据教程目录”
导言
正如我们在上一节的教程中所看到的,有很多可供选择的方式把参数 的值传递到OjbectDataSource的方法里。假如参数值是采用硬编码方式,来源于 页面上的一个Web控件,又或者其他可被数据源Parameter对象读取的源,那么这 个值可以绑定到输入参数而不需要写一行的代码。
然而有些时候,参数值 来自某些在数据源的内置Parameter对象里还没有计算出来的源。假如我们的站点 支持我们的考虑那么我们也许希望参数基于当前登录用户。又或者我们在参数传 送到ObjectDataSource的隐含对象的方法前做一些客户化定制。
无论什么 时候调用ObjectDataSource的Seelect方法,它都会首先触发它的Selecting事件 ,然后才调用ObjectDataSource的隐含对象的方法,完成后则激发 ObjectDataSource ObjectDataSource的Selected 事件(图一说明这些事件的顺 序)。可以在Selecting事件的事件委托中对参数的值进行设置或更改。
图 1: ObjectDataSource的Selected 和 Selecting 事件分别在调用它 的隐含对象的方法之前和之后触发
这一节里我们将看看添加一个接受一个输入 参数方法到DAL和BLL层,参数名为Month,int类型,方法返回一个 EmployeesDataTable对象,里边包含的是雇佣周年纪念都指定月份的雇员。我们 的例子将编码设置为基于当前月份,显示一个“本月雇用周年纪念员工 ”列表。
让我们开始吧!
第一步: 添加一个方法到 EmployeesTableAdapter
在我们的第一个例子里,我们需要添加一个方法来获 取那些雇用日期(HireDate)在某个指定月份的员工。在我们的程序架构下为了 提供这个功能,我们首先需要在通过特定SQL语句映射出来的 EmployeesTableAdapter中创建一个方法。为了实现这一点,首先打开Northwind 类型化数据集,在EmployeesTableAdapter标签上右键选择“添加查询 ”。
图 2: 在 EmployeesTableAdapter里添加一个查询
选择返回一个或 多个行和列的SQL语句。当到达指定SELECT语句窗口时,EmployeesTableAdapter 已经装载了默认的SELECT语句。简单地,添加一个WHERE子句:WHERE DATEPART (m, HireDate) = @Month 。其中DATEPART是T-SQL里的一个函数,用作返回日期 类型的一部分;在这里,我们使用DATEPART函数返回雇用日期(HireDate)列的 月份部分。
图 3: 仅返回 HireDate 列的值小于等于参数 @HiredBeforeDate的行