2016-07-08 8 views
1

ASP.NET 2.0 рамкиSqlDataSource - SelectCommand сеанса, фильтр с перестраиваемой

Я пытаюсь получить список всех записей, связанных с пользователем, когда пользователь посещает страницу. У меня есть переменная сеанса, установленная с посетителем в сеансе. Теперь я хочу запросить базу данных с этим идентификатором. Кажется, что он выполняется, но результаты не возвращаются (я показываю содержимое в отдельном разделе кода).

Пожалуйста, помогите!

<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: метод «Защищенный Sub SqlDataSource1_Selected (отправитель как объект, e As System.Web.UI.WebControls.SqlDataSourceStatusEventArgs)» не имеет подписи, совместимой с делегатом 'Делегат Sub SqlDataSourceSelectingEventHandler (отправитель как объект, e As System.Web.UI.WebControls.SqlDataSourceSelectingEventArgs)'. – Kana

+0

Полностью удалите обработчик события выбора. Установите сеанс в загрузке страницы или на предыдущей странице и получите доступ к нему, используя предоставленный мной пример. Посмотрите на этот пример - http://forums.asp.net/t/1062765. aspx? sqldatasource + использование + session + data + in + select + parameters. Это точно так, как предлагает ecbruck –

+0

Спасибо Деннис. Полностью удалено обработчик выбора выбора. И сеанс устанавливается на страницеLoad. Сессия («VisitorID») = userID Теперь получение: Сообщение об ошибке Parser: тег сервера плохо сформирован. Источник ошибки: Строка 15: <жерех: SqlDataSource Строка 16: ID = "UserReports" Line 17: Runat = "сервер" – Kana