ASP.NET 2.0数据教程:SelectMethod属性的使用


  本文标签:SelectMethod

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

  使用EmployeesBLL 类 

  图 6: 使用EmployeesBLL 类

   选择GetEmployeesByHiredDateMonth(month)方法 

  SelectMethod: 选择GetEmployeesByHiredDateMonth(month)方法

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

  让参数源设置为None 

  图 8: 让参数源设置为None

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

  1. < asp:ObjectDataSource ID="ObjectDataSource1" runat="server" OldValuesParameterFormatString="original_{0}" 
  2.  
  3.     SelectMethod="GetEmployeesByHiredDateMonth" TypeName="EmployeesBLL">  
  4.  
  5.     < SelectParameters>  
  6.  
  7.         < asp:Parameter Name="month" Type="Int32" />  
  8.  
  9.     < /SelectParameters>  
  10.  
  11. < /asp:ObjectDataSource>  
  12.  

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

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

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

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

  1. protected void ObjectDataSource1_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)  
  2.  
  3. {  
  4.  
  5.     e.InputParameters["month"] = DateTime.Now.Month;  
  6.  
  7. }  
  8.  

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

  雇用周年纪念日在本月份的员工被显示出来了 

  图 10: 雇用周年纪念日在本月份的员工被显示出来了

  这样就通过SelectMethod属性实现了显示指定范围内的对象  。