9

我已经asp:GridView使用asp:SqlDataSource. 我想限制客户端显示的信息:

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

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

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

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

我做了什么?

4

2 回答 2

19

如果 SqlDataSource 的任何参数为空,则不会触发 SqlDataSource,除非您另外指定:

<asp:SqlDataSource CancelSelectOnNullParameter="False" />

可能还需要为您的查询字符串参数添加一个空默认值:

<asp:QueryStringParameter Name="client" QueryStringField="client" DefaultValue="" ConvertEmptyStringToNull="True" />
于 2010-04-21T23:10:08.890 回答
3

对于这些情况,您需要为参数定义一个默认值,例如:

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

然后在SP中你需要验证客户端是否为0,返回所有客户端,否则返回特定客户端。

于 2010-04-21T22:45:25.947 回答