2010-01-19 6 views
1

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

Я могу проверить это поведение, установив 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> 

ответ

3

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

+0

Райан, этот ответ был прямо на! У меня была та же проблема и установка ConvertEmptyStringToNull = "false" в параметре, который подал предложение LIKE в выражении, устранил проблему. –