ASP .Элемент управления сетевым ретранслятором, содержащий LinkButton

#asp.net #repeater #linkbutton

#asp.net #ретранслятор #linkbutton

Вопрос:

Я отображаю список объектов accounts в ретрансляторе. Каждый объект содержит три поля, а именно StudentID, studentName и studentAge. Я обернул его кнопкой ссылки. В результате каждый отдельный отображаемый элемент доступен для просмотра. Я также добавил обработчик щелчка к кнопке ссылки. Проблема в том, как я должен знать, какой студент был нажат? Потому что изначально я хочу перейти на следующую страницу и отобразить данные этого конкретного учащегося. Как только я узнаю, какой студент нажат, я могу сохранить его данные в объекте сеанса, а затем перейти на новую страницу и получить ее обратно.

Спасибо за вашу помощь.

Ответ №1:

В вашем случае было бы лучше использовать обычную гиперссылку, передать идентификатор в качестве строки запроса и получить подробную информацию на новой странице.

 <asp:HyperLink runat="server" 
               NavigateUrl='<%# Eval("studentID", "StudentDetails.aspx?id={0}") %>'
               Text="Details" />
  

Обновить:

Чтобы получить идентификатор студента на той же странице, вместо этого используйте событие ItemCommand и выполните LinkButton следующие действия:

 <asp:LinkButton runat="server"
                CommandName="StudentDetails"
                CommandArgument='<%# Eval("studentID") %>' />
  

Идентификатор студента будет сохранен в CommandArgument свойстве, значение которого будет передано обработчику ItemCommand события.

Комментарии:

1. Нет, я не могу использовать гиперссылку, так как на следующей странице у меня нет доступа к списку объектов учетной записи. Мне нужно извлечь объект на самой этой странице, а затем передать его на следующую страницу через переменную сеанса.

2. @VVV, я вижу. Я думал, вы собираетесь загрузить запись из базы данных.

Ответ №2:

 <asp:HyperLink ID="HyperLink1" runat="server" 
               NavigateUrl='<%# DataBinder.Eval(Container.DataItem,"studentID", "StudentDetails.aspx?Id={0}") %>'
               Text="Details" />