asp:QueryStringParameter和空查询字符串参数

时间:2010-04-21 22:39:55

标签: asp.net .net sql-server sqldatasource querystringparameter

asp:GridView使用asp:SqlDataSource显示客户端请求。我想限制客户显示的信息:

View.aspx必须显示所有内容,View.aspx?client=1必须仅显示来自客户端ID#1的请求。

所以我使用<asp:QueryStringParameter Name="client" QueryStringField="client" />查询"EXEC getRequests @client"

指定某个客户端时,一切正常。但不要 - 如果不是。

我使用SSMS测试了我的SP - 它在两种情况下都正常工作 - 指定参数时和不显示参数时(NULL显式传递)。

我做了什么?

2 个答案:

答案 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,返回所有客户端,否则返回特定客户端。