ASP.NET 2.0数据教程之六:编程设置ObjectDataSource的参数值
[2] ASP.NET 2.0数据教程之六:编程设置ObjectDataSource的参数值
[3] ASP.NET 2.0数据教程之六:编程设置ObjectDataSource的参数值
[4] ASP.NET 2.0数据教程之六:编程设置ObjectDataSource的参数值
系列文章导航:
ASP.NET 2.0数据教程之四:使用ObjectDataSource展现数据
ASP.NET 2.0数据教程之六:编程设置ObjectDataSource的参数值
ASP.NET 2.0数据教程之七:使用DropDownList过滤的主/从报表
ASP.NET 2.0数据教程之八:使用两个DropDownList过滤的主/从报表
ASP.NET 2.0数据教程之十:使用 GridView 和DetailView实现的主/从报表
ASP.NET 2.0数据教程之十一:基于数据的自定义格式化
ASP.NET 2.0数据教程之十二:在GridView控件中使用TemplateField
这将在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: 雇用周年纪念日在本月份的员工被显示出来了
总结
虽然可以用特定的方式声明ObjectDataSource的参数值而不需要写代码,编程设置参数值同样很容易。我们需要做的仅仅是给ObjectDataSource的Selecting事件增加一个事件委托,它在调用隐含对象的方式前触发,并且通过InputParameters集合手工设置一个或多个参数值。
本节结束基本这一章。下一节我们开始主从数据一章,这一章里我们将着眼于允许访问者筛选数据和主从数据处理的技巧。
祝编程快乐!
作者简介
Scott Mitchell,著有六本ASP/ASP.NET方面的书,是4GuysFromRolla.com的创始人,自1998年以来一直应用微软Web技术。Scott是个独立的技 术咨询顾问,培训师,作家,最近完成了将由Sams出版社出版的新作,24小时内精通ASP.NET 2.0。他的联系电邮为mitchell@4guysfromrolla.com,也可以通过他的博客http://ScottOnWriting.NET与他联系。