SqlDataSource - 带有会话变量过滤器的 SelectCommand

SqlDataSource - SelectCommand with session variable filter

ASP.NET 2.0 框架

我试图在用户访问页面时列出所有与用户相关的条目。我在会话中为访问者设置了一个会话变量。现在我想用那个 ID 查询数据库。它似乎正在执行,但没有返回任何结果(我在单独的代码部分中显示内容)。

请帮忙!

<asp:SqlDataSource
ID="UserReports" 
runat="server"
ConnectionString= "<%$ ConnectionStrings:MyConnectionString %>"
SelectCommand = "SELECT [ID], [ReportName], [ReportPath] FROM [Pan].          
[dbo].[Reports] WHERE ([VisitorID] = @VisitorID)"
OnSelecting  = "SqldsExample_Selecting">

<SelectParameters>
    <asp:Parameter Name="VisitorID" Type="String"/>
</SelectParameters>    
</asp:SqlDataSource>

On the code behind:

Sub SqldsExample_Selecting(sender As Object, e As      
SqlDataSourceSelectingEventArgs)

UserReports.SelectParameters.Add("@VisitorID", Session("VisitorID"))

End Sub

不要使用 <asp:Parameter>。您应该使用 <asp:SessionParameter> 直接访问会话变量:

<SelectParameters>
    <asp:SessionParameter Name="VisitorID" SessionField="VisitorID" />
</SelectParameters>