ASP.NET - SQLDataSource - FilterExpression - Проблема с пустыми строками - PullRequest
1 голос
/ 19 января 2010

В этом тестовом приложении я фильтрую по двум ControlParameters. Как видно из первого кодового блока, оба параметра имеют значение по умолчанию%. Этот код прекрасно работает. Однако во втором блоке кода обратите внимание, что значения по умолчанию исключены. Второй блок кода работает до тех пор, пока текст Textbox не будет пустым. По какой-то причине, когда .NET оценивает выражение фильтра и вставляет "" в выражение, оно, похоже, выдает ошибку и не фильтрует ни один из моих результатов.

Я могу проверить это поведение, установив defaultvalue = "" для каждого ControlParameter.

Очевидно, что я нашел обходной путь, но я хотел бы знать, почему выражение FilterExpression ломается, когда предоставляется пустая строка.

Есть идеи?

Кодовый блок 1:

    <asp:SqlDataSource ID="Customer_Data" runat="server" 
        ConnectionString='<%$ ConnectionStrings:connectionString %>'
        SelectCommand="SELECT Station, StoreFront, CustomerID as CustID FROM vStations" 
        ProviderName="System.Data.SqlClient" 
        FilterExpression="StoreFront LIKE '%{0}%' and CustID LIKE '{1}%'" 
        EnableCaching="True"
        CacheDuration="60">

        <FilterParameters>
            <asp:ControlParameter ControlID="TextBox1" PropertyName="Text" DefaultValue="%" />
            <asp:ControlParameter ControlID="TextBox2" PropertyName="Text" DefaultValue="%" />            
        </FilterParameters>
    </asp:SqlDataSource>

Кодовый блок 2:

    <asp:SqlDataSource ID="Customer_Data" runat="server" 
        ConnectionString='<%$ ConnectionStrings:connectionString %>'
        SelectCommand="SELECT Station, StoreFront, CustomerID as CustID FROM vStations" 
        ProviderName="System.Data.SqlClient" 
        FilterExpression="StoreFront LIKE '%{0}%' and CustID LIKE '{1}%'" 
        EnableCaching="True"
        CacheDuration="60">

        <FilterParameters>
            <asp:ControlParameter ControlID="TextBox1" PropertyName="Text"  />
            <asp:ControlParameter ControlID="TextBox2" PropertyName="Text"  />
        </FilterParameters>
    </asp:SqlDataSource>

1 Ответ

3 голосов
/ 19 января 2010

Попробуйте установить для свойства ConvertEmptyStringToNull двух <asp:ControlParameter> значение false. По умолчанию они true, и я предполагаю, что нули отбрасывают вещи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...