2010-10-15 4 views
1

Я использую GridView, и я требую, чтобы пользователь мог фильтровать с помощью 2 элементов управления. Один просто фильтрует тип строки - есть столбец с именем action, и пользователь выбирает одно из различных значений из базы данных в раскрывающемся списке, а gridview отображает только строки с этим значением в столбце действий. По своей сути это работает отлично.Выражение фильтра не работает должным образом

Но я также добавляю текстовое поле, в котором пользователь может ввести идентификатор либо «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> 

ответ

0

вы пробовали настройки ConvertEmptyStringToNull="false" поля от параметра управления?

1

В моем случае, заменив выражение SQL фильтра LIKE '{1}%' по LIKE '{1}' сделал разницу. Первый не работал, последний сделал.

Смежные вопросы