问题
I haveasp:GridView
displaying client requests using asp:SqlDataSource
. I want to limit displayed information by client:
View.aspx
has to display everything, View.aspx?client=1
has to display only requests from client ID #1.
So I'm using <asp:QueryStringParameter Name="client" QueryStringField="client" />
for query "EXEC getRequests @client"
.
Everything works properly when some client is specified. But don't - if not.
I tested my SP using SSMS - it works properly in both cases - when parameter is specified and when it isn't (NULL
passed explicitly).
What have I do?
回答1:
SqlDataSource won't fire if any of it's parameters are null, unless you specify otherwise:
<asp:SqlDataSource CancelSelectOnNullParameter="False" />
It might also be necessary to add a null default value to your querystring parameter:
<asp:QueryStringParameter Name="client" QueryStringField="client" DefaultValue="" ConvertEmptyStringToNull="True" />
回答2:
You need to define a Default value to the parameter for those situations, for example:
<asp:QueryStringParameter Name="client" QueryStringField="client" DefaultValue="0"/>
and then in the SP you need verify if the client is 0, return all the clients, otherwise the specific one.
来源:https://stackoverflow.com/questions/2687048/aspquerystringparameter-and-empty-query-string-parameter