#asp.net #vb.net #dynamic #reference #textbox
#asp.net #vb.net #динамические #ссылка #текстовое поле
Вопрос:
У меня есть проект ASP, который ссылается на службу WCF. Делает ровно половину того, что мне нужно.
Кнопка на странице вызывает функцию из WCF, которая возвращает список объектов (имена переменных). При возврате код vb динамически добавляет текстовые поля на панель на странице. Вот так:
For Each LetterVariables In LetterVarList
tb = New TextBox
lb = New Label
lb.Text = LetterVariables._key amp; " "
tb.ID = LetterVariables._key
pnlVars.Controls.Add(lb)
pnlVars.Controls.Add(tb)
Dim LineBreak As LiteralControl = New LiteralControl("<br />")
pnlVars.Controls.Add(LineBreak)
Next
Теперь проблема в том, что после завершения этого пользователь введет некоторые значения в эти текстовые поля. Мне (каким-то образом) нужно ссылаться на эти текстовые поля, чтобы получать значения, когда пользователь нажимает другую кнопку.
Как я могу это сделать?
Спасибо, Джейсон
Ответ №1:
Вы можете присвоить текстовому полю идентификатор, для извлечения которого вы могли бы использовать FindControl.
tb.ID = "txt" LetterVariables._key.ToString();
Затем, когда вы захотите сослаться на это.
TextBox txtBox = (TextBox)FindControl("txt" someKey);
Что-то подобное может сработать для вас.
Ответ №2:
Не забудьте воссоздать элементы управления в post back, прежде чем элементы управления будут загружены с размещенными значениями.
Комментарии:
1. Переопределите LoadViewState и поместите в него код, подобный приведенному выше. Я не уверен, как вы получаете свой LetterVarList, но вы можете сохранить материал в ViewState, если вы не можете легко воссоздать LetterVarList.