SqlDataSource 控件启用筛选

SqlDataSource 控件允许您在不重新运行查询的情况下筛选(排序或选择)查询结果。通过向 SqlDataSource 控件添加筛选,可以在运行查询后更改 SqlDataSource 提供的可用数据,而无需返回数据库。

此主题演示如何为 SqlDataSource 控件启用筛选。绑定到 SqlDataSource 控件的数据绑定控件(如 GridView 控件)将只显示筛选的结果。

若要使用筛选,必须将 SqlDataSource 控件设置为返回数据集中的信息并缓存其结果。然后可以指定将用作 SqlDataSource 控件下的 DataView 对象的 RowFilter 属性的筛选器表达式。

此筛选器可以包括基于其他控件、Cookie、Session 变量或查询字符串的值的参数。例如,如果一个 DropDownList 控件中包含城市名称,则可以使用在 DropDownList 控件中选择的城市作为筛选参数。

 

为 SqlDataSource 控件启用筛选

  1. 创建带有有效连接字符串和 select 语句的 SqlDataSource 控件。有关更多信息,请参见如何:使用 SqlDataSource 控件连接到 SQL Server 数据库

  2. SqlDataSource 控件的 DataSourceMode 属性设置为 DataSet

  3. SqlDataSource 控件的 EnableCaching 属性设置为 true。

    为了支持筛选,必须对查询返回的数据进行缓存。

  4. SqlDataSource 控件的 CacheDuration 属性设置为希望数据缓存的秒数。所选择的数字取决于您的应用程序。

  5. 将控件的 FilterExpression 属性设置为用于指定返回数据的表达式,如下面的示例所示:

    country = 'Germany'

    有关筛选器表达式的语法的信息,请参见 RowFilter

    启用筛选的 SqlDataSource 控件将与下面类似:

    <asp:SqlDataSource
    
                    ID="SqlDataSource1"
    
                    DataSourceMode="DataSet"
    
                    EnableCaching="true"
    
                    Runat="server"
    
                    SelectCommand="Select * From Customers"
    
                    ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
    
                    FilterExpression="country = 'Germany'">
    
                    </asp:SqlDataSource>

    对数据库执行选择命令时,绑定到此 SqlDataSource 控件的控件将只显示筛选的结果。

带参数筛选

您常常会希望根据只在运行时为已知的值筛选查询结果。可以创建包括参数占位符的筛选器表达式,然后定义筛选器参数来填充占位符。筛选器参数可以从控件、查询字符串、cookie、Session 变量、配置文件属性或 Form 属性值获取值。

使用参数筛选 SqlDataSource 控件

  1. SqlDataSource 控件中的 FilterExpression 属性设置为一个表达式,该表达式中包括表示筛选器参数值的占位符。占位符使用语法 {n},其中,n 指示参数的顺序。

    下面的示例演示参数化的筛选器表达式。第二个表达式包括多个参数占位符。

    FilterExpression="category = '{0}'"
    
                    FilterExpression="country = '{0}' AND city = '{1}'"
  2. 创建一个 FilterParameters 元素,作为 SqlDataSource 元素的子级。对于每个筛选器参数占位符,添加属于下面任一类型的元素:

    下面的示例演示如何创建从 DropDownList 控件获取值的筛选器参数:

    <FilterParameters>
    
                    <asp:ControlParameter
    
                    Name="CategoryList" ControlID="DropDownList1"
    
                    PropertyValue="SelectedValue" />
    
                    </FilterParameters>
    Note注意

    参数的 Name 属性是必需的。但是,参数将按顺序而不是按名称与占位符相匹配。

    下面的示例演示一个带有参数化筛选器的完整 SqlDataSource 控件:

    <asp:SqlDataSource
    
                    ID="SqlDataSource1"
    
                    EnableCaching="true"
    
                    DataSourceMode="DataSet"
    
                    Runat="server"
    
                    SelectCommand="Select * from Customers"
    
                    ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString1 %>"
    
                    FilterExpression="country = '{0}'">
    
                    <FilterParameters>    <asp:ControlParameter      Name="countryparam"      ControlID="DropDownList1"      PropertyName="SelectedValue" />  </FilterParameters>
    
                    </asp:SqlDataSource>

 

你可能感兴趣的:(dataSource)