【问题标题】:Multiple possible FilterExpression's on SqlDataSource issueSqlDataSource 问题上的多个可能的 FilterExpression
【发布时间】:2010-11-10 12:28:15
【问题描述】:

我在页面中有一个 SqlDataSource,它将根据 1 个或 2 个查询字符串和/或过滤器文本框显示不同的结果。

这是我的 SqlDataSource 和过滤器:

  <asp:SqlDataSource ID="sdsAudits" runat="server" 
        ConnectionString="<%$ ConnectionStrings:constring %>" 
        SelectCommand="SELECT * FROM [Audit]" FilterExpression="source = {0} AND customer = {1} AND (itemID like '%{2}%' OR parentID like '%{2}%')">
        <FilterParameters>
        <asp:QueryStringParameter Name="source" QueryStringField="source" />
        <asp:QueryStringParameter Name="customer" QueryStringField="customer" />
        <asp:ControlParameter Name="txtFilter" ControlID="txtFilter" PropertyName="Text" />
        </FilterParameters>

但由于某种原因,对 3 个可能的过滤器中的任何一个的过滤都不起作用。我尝试取出 2 个查询字符串过滤器,只留下文本框过滤器,然后它工作正常 - 所以我猜我的过滤器表达式是错误的?

有什么想法吗?请记住,如果所有 3 个过滤器具有 2 个查询字符串并已在文本框中输入,则所有 3 个过滤器可能同时处于“活动”状态,或者它们可能根本没有,或者当然介于两者之间。

【问题讨论】:

    标签: c# asp.net filter sqldatasource


    【解决方案1】:

    Filter 旨在在 DataSet 模式下工作 - 将数据检索到内存中,然后进行过滤。效率不高 - 在选择命令本身中使用参数要好得多,如下所示:

    <asp:SqlDataSource ID="sdsAudits" runat="server" 
        ConnectionString="<%$ ConnectionStrings:constring %>" 
        SelectCommand="SELECT * FROM [Audit] where source = @source AND customer = @customer AND (itemID like '%' + @txtFilter + '%' OR parentID like '%'+@txtFilter+'%')">
        <SelectParameters>
          <asp:QueryStringParameter Name="source" QueryStringField="source" />
          <asp:QueryStringParameter Name="customer" QueryStringField="customer" />
          <asp:ControlParameter Name="txtFilter" ControlID="txtFilter" PropertyName="Text" />
        </SelectParameters>
    </asp:SqlDataSource>
    

    或者只是添加

      DataSourceMode="DataSet"
    

    到您的 SqlDataSource 标记

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-19
      • 1970-01-01
      • 2012-12-28
      • 2016-12-05
      • 2010-11-15
      • 2012-07-06
      相关资源
      最近更新 更多