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