Я использую GridView, и мне нужно, чтобы пользователь мог фильтровать с помощью 2 элементов управления. Один просто фильтрует тип строки — есть столбец с именем действие, и пользователь выбирает одно из различных значений из базы данных в раскрывающемся списке, а представление сетки отображает только строки с этим значением в столбце действия. Само по себе это работает идеально.
Но я также добавляю текстовое поле, в котором пользователь может ввести идентификатор «itemID» или «parentID». Это прекрасно работает даже с предыдущим элементом управления.
Проблема в том, что раскрывающийся список не работает, когда текстовое поле пусто (т.е. отображаются все идентификаторы). Если я выберу значение и нажму «Отправить», он просто ничего не сделает. Теперь, если я фильтрую по идентификатору, а затем выбираю значение из раскрывающегося списка, все работает отлично.
Вот мое выражение фильтра и параметры источника данных:
<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>