2016-07-08 27 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

相關問題