2016-07-08 30 views
1

ASP.NET 2.0框架SqlDataSource - 带会话变量过滤器的SelectCommand

我试图列出用户访问该页面时所有与用户相关的条目。我在会话中设置了访问者的会话变量。现在我想用该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 
+0

我要找的VB,不C#请。 – Kana

+0

你可以看看marc_s的答案在下面的帖子中:http://stackoverflow.com/questions/17000390/assiging-parameters-to-sqldatasource。 – ConnorsFan

回答

0

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

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

谢谢丹尼斯。根据您的建议,我收到以下内容: 编译器错误消息:BC31143:方法受保护的子SqlDataSource1_Selected(发件人为对象,e为System.Web.UI.WebControls.SqlDataSourceStatusEventArgs)'没有与代理兼容的签名'委托Sub SqlDataSourceSelectingEventHandler(sender As Object,e As System.Web.UI.WebControls.SqlDataSourceSelectingEventArgs)'。 – Kana

+0

完全删除选择事件处理程序。在页面加载或上一页中设置会话,并使用我提供的示例访问它。查看此示例 - http://forums.asp.net/t/1062765。 aspx?sqldatasource +使用+ session + data + in + select +参数。完全按照ecbruck的建议 –

+0

感谢Dennis。 完全移除了选择事件处理程序。会话正在pageLoad上设置。 会话(“VisitorID”)=用户ID 现在得到: 解析器错误消息:服务器标记格式不正确。 源错误: 线15:的 Kana

相关问题