2010-10-15 68 views
1

我正在使用GridView,并且我要求用户能够使用2个控件进行过滤。一个简单的过滤行的类型 - 有一个名为action的列,用户在下拉框中从数据库中选择一个不同的值,并且gridview只在行为列中显示具有该值的行。在它自己这个作品完美。过滤器表达式无法正常工作

但我还添加了一个文本框,用户可以在其中键入'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> 

回答

3

您需要FilterParameters设置的ControlParameterConvertEmptyStringToNull属性false

这保证了gridview显示所有数据时,所有的过滤文本框中

+0

没有文字终于找到一个合适的答案!多谢,伙计! – sbs 2013-04-04 19:50:09

相关问题