庸医

Whatever comes our way,whatever battle we have raging inside us,we always have a choice. My friend Harry taught me that.He chose to be the best of himself.It's the choices that make us who we are and we can always choose to do what's right.

导航

学习SqlDataSource数据源控件(二)

如何使用SqlDataSource数据源控件来选择记录
一、SqlDataSource数据源控件如何执行存储过程
首先创建两个存储过程:
第一个存储过程返回产品所属的子类别
CREATE PROCEDURE [dbo].[GetProductSubCategories]
AS
  
SELECT ProductSubcategoryID, Name FROM Production.ProductSubcategory
  
ORDER BY ProductSubcategoryID
第二个存储过程接收具体的子类别ID,返回属于该子类别ID的所有产品
CREATE PROCEDURE [dbo].[GetProductsByCategoryID]
@ProductSubcategoryID int
AS
  
SELECT ProductID, Name, ProductNumber FROM Production.Product
  
WHERE ProductSubcategoryID=@ProductSubcategoryID ORDER BY ProductID
具体代码如下:
StoredProcedure代码
注意其中使用了SqlDataSource中的SelectCommandType属性。该属性默认设置为"Text",这里设置为"StoredProcedure",这样就能调用存储过程来完成查询。
二、使用DataReader来读取数据
SqlDataSource控件要么返回DataSet,要么返回DataReader。默认为DataSet,以前的例子就是使用DataSet。DataSet可以使GridView控件内置的排序和分页功能得到体现,也可以利用SqlDataSource的缓存功能。但是DataReader在当只需要向前访问数据时,它要比使用DataSet具有更高的性能,然而这种情况就无法使用排序功能了。
如何设置呢?需要在SqlDataSource控件的DataSourceMode属性中设置。
请看如下代码:
DataReader代码
注意:DataSourceMode属性设置为DataReader。
三、从QueryString中获取数据
具体代码如下:
QueryString代码
上面的代码将QueryString值作为参数传递给存储过程。
<asp:QueryStringParameter>控件中的Name和QueryStringField属性,分别设置存储过程参数和查询字符串名称。
如何触发呢?要在该页面运行后,浏览器地址栏中自行手动添加查询字符串"?CategoryID=N",N在这里是数字,1,2,3,4...
这个QueryStringParameter参数控件仍旧是SelectParameters集合中包含的一种参数控件。
四、利用SqlDataSource控件处理返回参数值
首先创建存储过程
1CREATE PROCEDURE [dbo].[GetDepartments]
2  AS
3  SELECT DepartmentID, Name, GroupName, ModifiedDate FROM HumanResources.Department
4  DECLARE @Count smallint
5  SELECT @Count = Count(DepartmentID) FROM HumanResources.Department
6  RETURN @Count
具体代码如下:
Return Parameters代码
SelectParameter集合除了以前谈到的输入参数外,还可以实现双向的参数。通过Parameter类的Direction属性来设置,该属性值如下:Input、Output、InputOutput和ReturnValue。
为了在数据操作完成之后获取这些参数值,利用适当的发送操作事件,例如这里的Selected(还可以是Updated、Inserted、Deleted),从传递给这些事件的事件参数中获取参数值。上面的例子中通过SqlDataSourceStatusEventArgs的Command属性来获取参数值。
注意:<asp:Parameter>中的Direction属性设置为"ReturnValue",Name属性的值相当于给通过查询返回的参数重新命名,这里将返回参数@Count设置为@ReturnValue。



posted on 2007-10-21 10:39  庸医  阅读(2475)  评论(1编辑  收藏  举报