asp: QueryStringParameter и параметр пустой строки запроса - PullRequest
8 голосов
/ 22 апреля 2010

У меня asp:GridView отображение клиентских запросов с использованием asp:SqlDataSource.Я хочу ограничить отображаемую информацию клиентом:

View.aspx должен отображать все, View.aspx?client=1 должен отображать только запросы от идентификатора клиента # 1.

Так что я использую <asp:QueryStringParameter Name="client" QueryStringField="client" /> для запроса "EXEC getRequests @client".

Все работает правильно, если указан какой-либо клиент.Но не - если нет.

Я проверил мой SP с использованием SSMS - он работает правильно в обоих случаях - когда параметр указан, а когда нет (NULL передан явно).

Что я делаю?

Ответы [ 2 ]

16 голосов
/ 22 апреля 2010

SqlDataSource не будет запускаться, если какой-либо из его параметров будет иметь значение null, если не указано иное:

<asp:SqlDataSource CancelSelectOnNullParameter="False" />

Может также потребоваться добавить нулевое значение по умолчанию для параметра строки запроса:

<asp:QueryStringParameter Name="client" QueryStringField="client" DefaultValue="" ConvertEmptyStringToNull="True" />
2 голосов
/ 22 апреля 2010

Вам необходимо определить значение по умолчанию для параметра для этих ситуаций, например:

<asp:QueryStringParameter Name="client" QueryStringField="client" DefaultValue="0"/>

, а затем в SP необходимо проверить, равен ли клиент 0, вернуть все клиенты, в противном случае конкретный.

...