ASP: QueryStringParameter и пустой параметр строки запроса
-
30-09-2019 - |
Вопрос
у меня естьasp:GridView
Отображение клиентских запросов с использованием asp:SqlDataSource
. Отказ Я хочу ограничить отображаемую информацию клиентом:
View.aspx
должен отобразить все, View.aspx?client=1
должен отображать только запросы от идентификатора клиента № 1.
Так что я использую <asp:QueryStringParameter Name="client" QueryStringField="client" />
для запроса "EXEC getRequests @client"
.
Все работает должным образом, когда указан некоторый клиент. Но не - если нет.
Я проверил мой SP, использующий SSMS - это работает правильно в обоих случаях - когда указан параметр и когда он не (NULL
пропущено явно).
Что я делаю?
Решение
SqldataSource не будет стрелять, если кто-либо из этого параметров NULL, если вы не указываете иначе:
<asp:SqlDataSource CancelSelectOnNullParameter="False" />
Также может потребоваться добавить нулевое значение по умолчанию на ваш параметр QueryString:
<asp:QueryStringParameter Name="client" QueryStringField="client" DefaultValue="" ConvertEmptyStringToNull="True" />
Другие советы
Вам необходимо определить значение по умолчанию для параметра для этих ситуаций, например:
<asp:QueryStringParameter Name="client" QueryStringField="client" DefaultValue="0"/>
А затем в SP вам нужен проверка, если клиент 0, вернуть всех клиентов, в противном случае конкретный.