Выражение фильтра не работает должным образом - PullRequest
1 голос
/ 15 октября 2010

Я использую 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>

Ответы [ 2 ]

1 голос
/ 16 августа 2012

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

0 голосов
/ 13 февраля 2012

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

...