我asp:GridView
使用asp:SqlDataSource
显示客户端请求。我想限制客户显示的信息:
View.aspx
必须显示所有内容,View.aspx?client=1
必须仅显示来自客户端ID#1的请求。
所以我使用<asp:QueryStringParameter Name="client" QueryStringField="client" />
查询"EXEC getRequests @client"
。
指定某个客户端时,一切正常。但不要 - 如果不是。
我使用SSMS测试了我的SP - 它在两种情况下都正常工作 - 指定参数时和不显示参数时(NULL
显式传递)。
我做了什么?
答案 0 :(得分:16)
如果SqlDataSource的任何参数为null,则不会触发它,除非您另行指定:
<asp:SqlDataSource CancelSelectOnNullParameter="False" />
可能还需要在querystring参数中添加一个null默认值:
<asp:QueryStringParameter Name="client" QueryStringField="client" DefaultValue="" ConvertEmptyStringToNull="True" />
答案 1 :(得分:2)
您需要为这些情况的参数定义默认值,例如:
<asp:QueryStringParameter Name="client" QueryStringField="client" DefaultValue="0"/>
然后在SP中你需要验证客户端是否为0,返回所有客户端,否则返回特定客户端。