配置过滤和选择参数

配置过滤和选择参数有两种方法1、使用配置向导配置参数,参见:

让GridView只显示特定用户的数据

2、以声明的方式选择数据

要选择数据,需要使用数据源的SelectParameters ,代码清单如下:(使用SelectParameters )

  1. <asp:SqlDataSource ID="SqlDataSource1" runat="server"
  2.   ConnectionString="<%$ ConnectionStrings:NorthwindConnectString %>"
  3.   SelectCommand="SELECT * FROM [Products] WHERE
  4.                  ([ProductName] LIKE '%' + @ProductName + '%')">
  5.   <SelectParameters>
  6.     <asp:ControlParameter Name="ProductName" Type="String"
  7.       ControlID="TextBox1" PropertyName="Text" />
  8.   </SelectParameters>
  9.   </asp:SqlDataSource>

上面代码显示用向导配置SqlDataSource 控件的结果(向导生成的源代码)。在此选择(Select)命令中已经增加了Where子句。注意,Where子句中的参数就像是一个标准SQL Server参数,它前面有一个@字符。另外还可以注意到,ControlParameter的Name属性与查询中的参数名匹配。可以使用任何值作为参数的名,但是它必须与实际参数匹配,另外让参数名与列名相同能增加代码可读性。

 

3、多个SelectParameters

  1. <asp:SqlDataSource ID="SqlDataSource1" runat="server"
  2.   ConnectionString="<%$ ConnectionStrings:NorthwindConnectString %>"
  3.   SelectCommand="SELECT * FROM [Products] WHERE
  4.                  ([ProductName] LIKE '%' + @ProductName + '%')
  5.                  AND UnitPrice < @UnitPrice
  6.                  AND Discontinued = @Discontinued">
  7.   <SelectParameters>
  8.     <asp:ControlParameter Name="ProductName" Type="String"
  9.       ControlID="TextBox1" PropertyName="Text" />
  10.     <asp:ControlParameter Name="UnitPrice" Type="Decimal"
  11.       ControlID="PriceList" PropertyName="SelectedValue" />
  12.     <asp:QueryStringParameter Name="Discontinued" Type="Boolean"
  13.       QueryStringField="Discontinued" />
  14.   </SelectParameters>
  15.   </asp:SqlDataSource>

这里有3个参数。第一个与前面所示的相同,第二个只匹配UnitPrice小于某个给定值的行,第三个匹配Discontinued列。

SelectCommand还是标准SQL格式,但是每个参数在SelectParameters中有一个入口。前面两个从控件取值,其中第一个参数从TextBox的Text属性取值,第二个参数从一个列表的SelectedValue取值。这说明,可以从控件的任何属性取值。第三个参数的值来自QueryString,这说明同一个查询中可以混合不同类型的参数。

 

4、使用FilterExpression 和FilterParameters

过滤稍有点不同,在此不修改SelectCommand,但是要增加一个FilterExpression属性,而且使用FilterParameters而不是SelectParameters。代码如下:

  1. <asp:SqlDataSource ID="SqlDataSource1" runat="server"
  2.   ConnectionString="<%$ ConnectionStrings:NorthwindConnectString %>"
  3.   SelectCommand="SELECT * FROM [Products]"
  4.   FilterExpression="ProductName LIKE '{0}%'">
  5.   <FilterParameters>
  6.     <asp:ControlParameter Name="ProductName" Type="String"
  7.       ControlID="TextBox1" PropertyName="Text" />
  8.   </FilterParameters>
  9. </asp:SqlDataSource>

注意,FilterExpression中的参数并没有显式命名,它们根据位置来标识。所以{0}就是指FilterParameters中的第一个参数;后面参数依序分别是{1}, {2}, 等等。

 

参考:

ASP.NET 2.0 Illustrated     (英)Alex Homer;Dave Sussman

Chapter 3.  Data Source and Data Display Controls---Data Source Controls

 

 

 

 

你可能感兴趣的:(配置过滤和选择参数)