#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" />