快速业务通道

Scott Mitchell的ASP.NET 2.0数据教程之五:声明参数

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21
会返回任何结果。简而言之 ,不会返回任何供应商。

一旦访问正输入一个国家,然后点击Show Suppliers按钮触发一次回传(postback),ObjectDataSource的Select方法被请 求,同时传递文本框的Text值作为country参数。

Scott Mitchell的ASP.NET 2.0数据教程之五:声明参数

图 9: 显示出位于Canada的供应商默认显示所有供应商

相对于 在第一次访问页面时不显示任何供应商,我们也许会希望一开始显示所有的供应 商,并且允许用户通过在文本框里输入国家名称来缩减列表。当文本框空白时, 一个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空白时 )将显示所有的供应商。

Scott Mitchell的ASP.NET 2.0数据教程之五:声明参数

图 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与他联系。

本文配套源码

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号