【问题标题】:SqlDataSource - SelectCommand with session variable filterSqlDataSource - 带有会话变量过滤器的 SelectCommand
【发布时间】:2016-11-11 13:27:15
【问题描述】:

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.net session sqldatasource selectcommand


【解决方案1】:

不要使用&lt;asp:Parameter&gt;。您应该使用&lt;asp:SessionParameter&gt; 直接访问会话变量:

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

【讨论】:

  • 谢谢丹尼斯。根据您的建议,我得到以下信息:编译器错误消息:BC31143:方法“受保护的子 SqlDataSource1_Selected(发件人作为对象,e 作为 System.Web.UI.WebControls.SqlDataSourceStatusEventArgs)”没有与委托“委托”兼容的签名Sub SqlDataSourceSelectingEventHandler(sender As Object, e As System.Web.UI.WebControls.SqlDataSourceSelectingEventArgs)'.
  • 完全删除 Selecting 事件处理程序。在页面加载或上一页中设置会话并使用我提供的示例访问它。看看这个示例 - forums.asp.net/t/… 完全一样ecbruck 建议
  • 谢谢丹尼斯。完全删除了 Selecting 事件处理程序。并且会话正在 pageLoad 上设置。 Session("VisitorID") = userID 现在得到:解析器错误消息:服务器标签格式不正确。源错误:第 15 行:
  • 这意味着您的 .aspx 页面中的某个控件格式不正确(没有结束标记、包含无效字符等)检查您的 .aspx 页面并找到问题。记住如果对您有帮助,请将我的帖子标记为已回答
  • 谢谢丹尼斯。我能够纠正解析错误,现在可以看到以下结果: 我之所以选择事件处理程序是因为我想跟踪用户对上面链接的点击。你能帮忙吗?
猜你喜欢
  • 1970-01-01
  • 2010-10-03
  • 1970-01-01
  • 2013-03-31
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 2018-03-12
  • 1970-01-01
相关资源
最近更新 更多