快速业务通道

ASP.NET 2.0数据教程之四十八:在SqlDataSource中使用参数化查询

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21
omCategoryView[0]["CategoryName"].ToString());
13   }
14}

randomCategoryView[0]返回DataView中的第一个 DataRowView,而randomCategoryView[0]["CategoryName"]返回第一 行中的CategoryName列的值。注意DataView是弱类型的。要引用一个特定的列的 值,我们需要把这个列的列名以字符串的形式传过去(这里就是 “CategoryName”)。图十三向我们展示了当访问这个页面时,这个消 息将会显示在CategoryNameLabel中。当然了,每次访问这个页面时,具体显示出 来的分类名都是通过RandomCategoryDataSource随机选出来的(包括postback) 。

ASP.NET 2.0数据教程之四十八:在SqlDataSource中使用参数化查询

图十三:随机选择的分类的名称显示出来了

注意:如果 SqlDataSource控件的DataSourceMode属性被设置为DataReader的话,从Select() 方法返回的值需要转换成一个IDataReader。要从第一行中读取CategoryName列的 值的话,我们需要使用这样的代码:

1if (randomCategoryReader.Read())
2{
3  string categoryName = randomCategoryReader["CategoryName"].ToString();
4 
5}

由于SqlDataSource已经随机的选取了一个分类,所以我们现 在可以准备添加一个用以显示其产品的GridView的了。

注意:其实我们可 以通过向页面添加一个FormView或是一个DetailsView,并绑定这个 SqlDataSource以显示这个分类的名称,而不是通过Label。使用Label的原因是, 我们可以以此来说明如何通过编程的方式来调用SqlDataSource的Select()方法并 在代码中使用其返回的结果。

第五步:通过编程的方式赋予参数值

本节教程前面的所有例子都是使用一个硬编码的参数值或一个来自预定义 参数源的值(比如QueryString、页面上的Web控件等等)。不过,SqlDataSource 控件的参数还可以通过编程的方式来设定。为了完成现在的这个例子,我们需要 一个可以返回指定分类的所有产品的SqlDataSource。这个SqlDataSource将含有 一个CategoryID参数,其值需要在Page_Load事件处理方法中根据 RandomCategoryDataSource返回的CategoryID值来进行设定。

首先,我们 向页面添加一个GridView,并绑定一个新的名为ProductsByCategoryDataSource 的SqlDataSource。就像我们在第三步中做的那样,配置这个SqlDataSource以使 其可以调用存储过程GetProductsByCategory。确保“参数来源”下拉 列表设置为“无”,也不要输入默认值,因为我们要通过编程来设置 这个默认值。

ASP.NET 2.0数据教程之四十八:在SqlDataSource中使用参数化查询

图十四:不要指定“参数来源”和“默认值 ”

结束了SqlDataSource向导之后,声明标记代码应该像下面这个样 子:

1<asp:SqlDataSource ID="ProductsByCategoryDataSource" runat="server"
2  ConnectionString="<%$ ConnectionStrings:NORTHWNDConnectionString %>"
3   SelectCommand="GetProductsByCategory" SelectCommandType="StoredProcedure">
4   <SelectParameters>
5    <asp:Parameter Name="CategoryID" Type="Int32" />
6   </SelectParameters>
7</asp:SqlDataSource>

我们可以在Page_Load事件处理 方法中通过编程的方式给CategoryID参数设定一个默认值:

1// 赋 值给ProductsByCategoryDataSource的CategoryID参数的DefaultValue属性
2ProductsByCategoryDataSource.SelectParameters ["CategoryID"].DefaultValue =
3  randomCategoryView [0]["CategoryID"].ToString();

做完了这些工作之后 ,页面上就包含了一个可以显示某随机分类的所有产品的GridView了。

ASP.NET 2.0数据教程之四十八:在SqlDataSource中使用参数化查询

图十五:最终的完整页面(译者注:原文错了,原文这里是

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号