Как мне отфильтровать 5 параметров, включая раскрывающийся список, используя выражение фильтра?
Я пытаюсь отфильтровать мой gridview с 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>
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}#'">