ASP.NET 2.0数据教程之五:声明参数
[2] ASP.NET 2.0数据教程之五:声明参数
[3] ASP.NET 2.0数据教程之五:声明参数
[4] ASP.NET 2.0数据教程之五:声明参数
[5] ASP.NET 2.0数据教程之五:声明参数
系列文章导航:
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
默认显示所有供应商
相对于在第一次访问页面时不显示任何供应商,我们也许会希望一开始显示所有的供应商,并且允许用户通过在文本框里输入国家名称来缩减列表。当文本框空白时,一个null值被传递到类SuppliersBLL的GetSuppliersByCountry(country)方法作为country输入参数。这个null值继续被传递到DAL层的GetSupplierByCountry(country)方法,在那里它会被转换成数据库里的NULL值用作下面这个查询的@Country参数:
SELECT SupplierID, CompanyName, Address, City, Country, Phone
FROM Suppliers
WHERE Country = @Country
表达式Country = NULL总是返回False,除非有某些记录Country字段的值恰好为NULL,否则不返回任何数据。
为了当文本框空白时返回所有的供应商,我们可以在BLL层的GetSuppliersByCountry(country)方法中加入:当参数country为null值时,调用GetSuppliers()方法而其他情况则调用DAL层的GetSuppliersByCountry(country)方法。这将实现以下的效果:当不指定国家时返回所有的国家,而当提供了country参数则返回适当的供应商子集。
更改类SuppliersBLL的GetSuppliersByCountry(country)方法,如下:
public Northwind.SuppliersDataTable GetSuppliersByCountry(string country)
{
if (string.IsNullOrEmpty(country))
return GetSuppliers();
else
return Adapter.GetSuppliersByCountry(country);
}
作了这个更改后,第一访问页面DeclarativeParams.aspx (或者当文本框CountryName空白时)将显示所有的供应商。
图 10: 现在,默认显示所有供应商
总结
为了使用带输入参数的方法,我们需要在ObjectDataSource的SelectParameters集合里指定参数的值。不同的参数类型允许从不同的参数源获取它的值。默认的参数类型使用一个硬编码的值,但是也可以非常方便地,从querystiring,Session变量,cookies,或者用户从页面上的Web控件输入的值获取参数,甚者不需要写一行的代码。
这一章的教程了我们通过多个例子图解了如何使用在数据源中使用参数。然而,有些时候我们可能需要使用不能为空的参数,例如当前日期和时间,或者,如果我们的站点使用了Membership时访问者的User ID 。这些情况我们可以通过编程预先设置ObjectDataSource调用的方法的参数值。在下一个章的教程里,我们将看看如何实现这一点。
祝编程快乐!
作者简介
Scott Mitchell,著有六本ASP/ASP.NET方面的书,是4GuysFromRolla.com的创始人,自1998年以来一直应用微软Web技术。Scott是个独立的技 术咨询顾问,培训师,作家,最近完成了将由Sams出版社出版的新作,24小时内精通ASP.NET 2.0。他的联系电邮为mitchell@4guysfromrolla.com,也可以通过他的博客http://ScottOnWriting.NET与他联系。