筛选表达式无法正常工作

时间:2010-10-15 09:45:10

标签: asp.net filter sqldatasource

我正在使用GridView,我要求用户能够使用2个控件进行过滤。只需过滤行的类型 - 有一个名为action的列,用户在下拉框中选择数据库中的一个不同值,gridview只显示action列中具有该值的行。它本身就是完美的。

但我还添加了一个文本框,用户可以在其中键入“itemID”或“parentID”的ID。即使使用之前的控件,这也能正常工作。

问题是,当文本框为空(即显示所有ID)时,下拉框不起作用。如果我选择一个值并单击“提交”,则它不会执行任何操作。现在,如果我按ID过滤,然后从下拉框中选择一个值,它就可以完美运行。

这是我的过滤器表达式和数据源的参数:

      <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="cleared for privacy"
        SelectCommand="SELECT * FROM [Audit] WHERE ([source] = @source)" FilterExpression="action like '{0}%' and (itemID like '{1}' or parentID like '{1}')">
        <SelectParameters>
            <asp:Parameter DefaultValue="LOGISTICS" Name="source" Type="String" />
        </SelectParameters>
        <FilterParameters>
            <asp:ControlParameter Name="action" ControlID="DropDownList1" PropertyName="SelectedValue" />
            <asp:ControlParameter Name="legorinvid" ControlID="txtFilter" PropertyName="Text" />
        </FilterParameters>
    </asp:SqlDataSource>

1 个答案:

答案 0 :(得分:3)

您需要将ConvertEmptyStringToNull中的ControlParameter FilterParameters属性设置为false

这可确保gridview在所有过滤器文本框中没有文本时显示所有数据