В этом тестовом приложении я фильтруюсь двумя 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>
Райан, этот ответ был прямо на! У меня была та же проблема и установка ConvertEmptyStringToNull = "false" в параметре, который подал предложение LIKE в выражении, устранил проблему. –