【问题标题】:How do I filter on 5 parameters, including a dropdown list using filter expression?如何过滤 5 个参数,包括使用过滤器表达式的下拉列表?
【发布时间】:2017-03-14 21:06:06
【问题描述】:

我正在尝试使用 5 个不同的参数过滤我的网格视图。我可以让它正常工作,但是当我将“全部”添加到下拉列表中时会出现问题。如果我在下拉列表中选择全部,我将无法再过滤。它将显示所有结果,但过滤不起作用。我的过滤器表达式或控制参数有问题吗?

这是我当前的下拉列表:

<asp:DropDownList ID="DDL1" runat="server" AutoPostBack="true" 
DataTextField="Tab" DataValueField="Tab" AppendDataBoundItems="true" >
<asp:ListItem Value="">All</asp:ListItem>
<asp:ListItem Value="Tr">Tr</asp:ListItem>
<asp:ListItem Value="Out">Out</asp:ListItem>
<asp:ListItem Value="In">In</asp:ListItem>
</asp:DropDownList>

这是我的过滤来源:

<asp:SqlDataSource
SelectCommand="SELECT * FROM Log ORDER BY TimeStamp DESC" 
FilterExpression="Com LIKE '%{0}%' AND Usr LIKE '%{1}%' 
AND Tab = '{2}' AND TimeStamp >= '#{3}#' AND TimeStamp <= '#{4}#'">
<FilterParameters> 
<asp:ControlParameter ControlID="TB1" Name="Com" PropertyName="Text" Type="String" 
ConvertEmptyStringToNull="false" />

<asp:ControlParameter ControlID="TB2" Name="Usr" PropertyName="Text" Type="String" 
ConvertEmptyStringToNull="false" />   

<asp:ControlParameter Name="Tab" ControlID="DDL1" 
PropertyName="SelectedValue" ConvertEmptyStringToNull="true"/>

<asp:ControlParameter Name="Date" ControlID="DateFrom" Type="DateTime" PropertyName="Text"
ConvertEmptyStringToNull="false" />

<asp:ControlParameter Name="Date" ControlID="DateTo" Type="DateTime"   
PropertyName="Text" ConvertEmptyStringToNull="false" />
    </FilterParameters> </asp:SqlDataSource>

【问题讨论】:

  • All 向我显示,当您选择 ALL 并且 onvertEmptyStringToNull="true" 正在转换为 NULL 时,您的 SelectedValue 为空。当您有 NULL 时,我认为它不会作为字符串 'NULL' 工作,而是会搜索具有 'NULL' 值但不是 NULL 的记录。
  • 我也试过把它设为假,但也没有用。仍在试图弄清楚我需要在我的代码中修改什么

标签: asp.net gridview controlparameter


【解决方案1】:

在下拉列表中更新 ALL 选项的值

<asp:ListItem Value="-1">All</asp:ListItem>

更新您的控制参数设置默认值并删除 ConvertEmptyStringToNull=false

<asp:ControlParameter Name="Tab" ControlID="DDL1" 
PropertyName="SelectedValue" Type="String" DefaultValue="-1"/>

更新 Tab

的过滤器表达式
FilterExpression="Com LIKE '%{0}%' AND Usr LIKE '%{1}%' 
AND (Tab = '{2}' or '{2}' = '-1') AND TimeStamp >= '#{3}#' AND TimeStamp <= '#{4}#'">

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-24
    • 2021-12-23
    • 1970-01-01
    • 2019-05-20
    • 2015-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多