在ASP.NET 2.0中实现数据的绑定(4)

发表于:2007-06-30来源:作者:点击数: 标签:
我们还可以给SqlDataSource数据源控件的SelectCommand属性指定一个存储过程来替代一个 SQL 命令,而且使用存储过程具有更大的灵活性。为了实现该功能,可以设置SqlDataSource数据源控件的SelectCommandType属性为"StoredProcedure". 现在我们就利用SQL Serve
     我们还可以给SqlDataSource数据源控件的SelectCommand属性指定一个存储过程来替代一个SQL 命令,而且使用存储过程具有更大的灵活性。为了实现该功能,可以设置SqlDataSource数据源控件的SelectCommandType属性为"StoredProcedure".
  
    现在我们就利用SQL Server自带的示例数据库Northwind的"TenMostExpensiveProducts"存储过程来实现一个只读报表。
  
    该存储过程主要是在"Products"表中选择"ProductName"和"UnitPrice"两个字段,其代码如下:
  
  create procedure "Ten Most Expensive Products" AS
  SET ROWCOUNT 10
  SELECT Products.ProductName AS TenMostExpensiveProducts, Products.UnitPrice
  FROM Products
  ORDER BY Products.UnitPrice DESC
  
    页面代码如下:
  
  <form id="form1" runat="server">
  <ASP:GridView ID="GridView1" DataSourceID="SqlDataSource1" AutoGenerateColumns="False"
  runat="server">
  <Columns>
   <asp:BoundField DataField="TenMostExpensiveProducts" HeaderText="Product" />
   <asp:BoundField DataField="UnitPrice" DataFormatString="{0:c}" HeaderText="Price" />
  </Columns>
  </asp:GridView>
  <asp:SqlDataSource ID="SqlDataSource1" runat="server"
  SelectCommand="Ten Most ExpensiveProducts" ConnectionString=
  "<%$ ConnectionStrings:Northwind %>" SelectCommandType="StoredProcedure" />
  </form>
  
    在本例中我们可以通过设置SqlDataSource数据源控件的SelectCommandType属性为"StoredProcedure"来实现,如下图:
  
  
  
  也可以在数据源配置向导按下述步骤进行:
  
    当进行到"配置选择语句"窗口时,选择"指定一个自定义的SQL语句或存储过程"项,单击"下一步"
  
  
  
  在"自定义语句或存储过程"窗口中,选择"储存过程"项。并选择"Ten Most Expensive Products"
  
  
  
  等一系列的操作完成后,按F5执行该程序,页面显示如下:
  
  
  
  一般情况下,SqlDataSource数据源控件只返回包含查询结果的DataSet对象中的DataView。你可以配置SqlDataSource数据源控件将数据以DataReader的发生返回。当你希望只读,向前的数据存取时,采用DataReader的比DataSet具有更好的性能。尽管如此,当你需要SqlDataSource数据源控件的分页支持时,就必须采用DataSet的方式。
  
    设置SqlDataSource数据源控件的DataSourceMode属性为"DataReader",默认为"DataSet".如下图:
  
  
  
  页面代码如下:
  
  <form id="form1" runat="server">
  <asp:GridView ID="GridView1" DataSourceID="SqlDataSource1" AutoGenerateColumns="False"
  runat="server">
   <Columns>
    <asp:BoundField DataField="TenMostExpensiveProducts" HeaderText="Product" />
    <asp:BoundField DataField="UnitPrice" DataFormatString="{0:c}" HeaderText="Price" />
   </Columns>
  </asp:GridView>
  <asp:SqlDataSource ID="SqlDataSource1" runat="server"
  ConnectionString="<%$ ConnectionStrings:Northwind %>"
  SelectCommand="Ten Most Expensive Products"
  SelectCommandType="StoredProcedure"
  DataSourceMode="DataReader" />
  

原文转自:http://www.ltesting.net