在ASP.NET 2.0中怎么设置ObjectDataSource的参数值
创始人
2024-11-28 14:03:01
0次

第一步: 添加一个方法到 EmployeesTableAdapter

  在我们的第一个例子里,我们需要添加一个方法来获取那些雇用日期(HireDate)在某个指定月份的员工。在我们的程序架构下为了提供这个功能,我们首先需要在通过特定SQL语句映射出来的EmployeesTableAdapter中创建一个方法。为了实现这一点,首先打开Northwind类型化数据集,在EmployeesTableAdapter标签上右键选择“添加查询”。

在ASP.NET 2.0中怎么设置ObjectDataSource的参数值

图 2: 在 EmployeesTableAdapter里添加一个查询

  选择返回一个或多个行和列的SQL语句。当到达指定SELECT语句窗口时,EmployeesTableAdapter已经装载了默认的SELECT语句。简单地,添加一个WHERE子句:WHERE DATEPART(m, HireDate) = @Month 。其中DATEPART是T-SQL里的一个函数,用作返回日期类型的一部分;在这里,我们使用DATEPART函数返回雇用日期(HireDate)列的月份部分。

在ASP.NET 2.0中怎么设置ObjectDataSource的参数值

图 3: 仅返回 HireDate 列的值小于等于参数 @HiredBeforeDate的行

最后,分别把默认的方法名FillBy和GetDataBy更改为FillByHiredDateMonth和GetEmployeesByHiredDateMonth 。

在ASP.NET 2.0中怎么设置ObjectDataSource的参数值

图 4: 选择比FillBy和GetDataBy更恰当的方法名称

点击“完成”结束向导并返回到数据集的设计界面。这时候EmployeesTableAdapter会包含一套新的方法来获取指定月份雇用的员工。

在ASP.NET 2.0中怎么设置ObjectDataSource的参数值

图 5: 新的方法出现在数据集的设计界面

第二步: 在业务逻辑层添加方法 GetEmployeesByHiredDateMonth(month)

  因为我们的程序架构使用了单独的一层来处理业务逻辑和数据逻辑,我们需要在BLL里增加一个方法,该方法调用DAL的方法获取指定月份里雇用的员工。打开文件EmployeesBLL.cs并添加下面这个方法:

[System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Select, false)]

public Northwind.EmployeesDataTable GetEmployeesByHiredDateMonth(int month)

{

 return Adapter.GetEmployeesByHiredDateMonth(month);

}

和此类里的其他方法一样,GetEmployeesByHiredDateMonth(month)仅仅是简单地调用DAL并返回结果。

第三步: 显示雇用周年纪念日在本月份的员工

  最后一部我们举例说明如何显示雇用周年纪念在本月份的员工。首先,添加一个GridView控件到页面ProgrammaticParams.aspx,该页面在文件夹BasicReporting里。添加一个新的ObjectDataSource控件作为它的数据源。配置ObjectDataSource使用类EmployeesBLL并指定SelectMethod属性为GetEmployeesByHiredDateMonth(month)。

在ASP.NET 2.0中怎么设置ObjectDataSource的参数值

图 6: 使用EmployeesBLL 类

在ASP.NET 2.0中怎么设置ObjectDataSource的参数值

图 7: 选择GetEmployeesByHiredDateMonth(month)方法

最后一屏要求我们给month参数提供参数源。既然我们将编码设置这个值,就让参数源维持它的默认选项None,点击“完成”。

在ASP.NET 2.0中怎么设置ObjectDataSource的参数值

图 8: 让参数源设置为None

这将在ObjectDataSource的SelectParameters集合里创建一个未指定参数值的Parameter对象。



 

  

 

  要编码设置这个参数值,我们需要给ObjectDataSource的Selecting事件添加一个事件委托。为了实现这一点,到设计视图里在ObjectDataSource上双击。另一种方式是选中ObjectDataSource在属性窗口里点击黄色闪电小图标,然后,直接在Selecting这一栏里双击或者输入一个你要使用的事件委托的名称。

在ASP.NET 2.0中怎么设置ObjectDataSource的参数值

图 9:点击属性窗口里的闪电图标列出Web控件的所有事件

两种途径都可以在页面的代码隐藏类里增加一个对ObjectDataSource的Selecting事件的事件委托。在这个事件委托里,我们可以通过使用e.InputParameters[parameterName]读取参数的值,其中parameterName的值是标签里的属性Name的值(InputParameters也可以按照索引访问,用e.InputParameters[index])。为了把month参数设置为当前月份,需要在Selecting事件委托里加入如下代码:

protected void ObjectDataSource1_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)

{

 e.InputParameters["month"] = DateTime.Now.Month;

}

当通过浏览器访问该页面,我们可以看到只有一个员工是在当前月份(三月)雇用的:Laura Callahan,他从1994年3月开始雇用。

在ASP.NET 2.0中怎么设置ObjectDataSource的参数值

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...