最后一部我们举例说明如何显示雇用周年纪念在本月份的员工。首先,添加一个GridView控件到页面ProgrammaticParams.aspx,该页面在文件夹BasicReporting里。添加一个新的ObjectDataSource控件作为它的数据源。配置ObjectDataSource使用类EmployeesBLL并指定SelectMethod属性为GetEmployeesByHiredDateMonth(month)。
图 6: 使用EmployeesBLL 类
SelectMethod: 选择GetEmployeesByHiredDateMonth(month)方法
最后一屏要求我们给month参数提供参数源。既然我们将编码设置这个值,就让参数源维持它的默认选项None,点击“完成”。
图 8: 让参数源设置为None
这将在ObjectDataSource的SelectParameters集合里创建一个未指定参数值的Parameter对象。
- < asp:ObjectDataSource ID="ObjectDataSource1" runat="server" OldValuesParameterFormatString="original_{0}"
- SelectMethod="GetEmployeesByHiredDateMonth" TypeName="EmployeesBLL">
- < SelectParameters>
- < asp:Parameter Name="month" Type="Int32" />
- < /SelectParameters>
- < /asp:ObjectDataSource>
要编码设置这个参数值,我们需要给ObjectDataSource的Selecting事件添加一个事件委托。为了实现这一点,到设计视图里在ObjectDataSource上双击。另一种方式是选中ObjectDataSource在属性窗口里点击黄色闪电小图标,然后,直接在Selecting这一栏里双击或者输入一个你要使用的事件委托的名称。
图 9:点击属性窗口里的闪电图标列出Web控件的所有事件
两种途径都可以在页面的代码隐藏类里增加一个对ObjectDataSource的Selecting事件的事件委托。在这个事件委托里,我们可以通过使用e.InputParameters[parameterName]读取参数的值,其中parameterName的值是< asp:Parameter>标签里的属性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月开始雇用。
图 10: 雇用周年纪念日在本月份的员工被显示出来了
这样就通过SelectMethod属性实现了显示指定范围内的对象。
【编辑推荐】