2012-06-28 4 views
0

У меня динамически сгенерированная таблица, и для каждой строки в таблице есть текстовые поля формы, которые пользователь может заполнить, а затем отправить форму. Проблема, с которой я сталкиваюсь, - это доступ к значениям внутри этих полей после отправки.Не удается FindControl в динамически сгенерированной таблице

В таблице есть Id = tableAssigneeChildren

Это HTML производится одним из текстовых полей я пытаюсь получить доступ к:

<input name="ctl00$ContentPlaceHolder1$tChildName1" type="text" value="Test Name" id="tChildName1" /> 

Приведенный ниже код является то, что я использую только для проверки если я могу получить доступ к вышеуказанному текстовому полю:

Protected Sub btnSubmit_Click(sender As Object, e As System.EventArgs) Handles btnSubmit.Click 

    Dim childId As Integer 

    For childId = 1 To CInt(iChild.Value) 

     Response.Write(DirectCast(tableAssigneeChildren.FindControl("tChildName" & childId), TextBox).Text & "<br />") 

    Next 

End Sub 

Заранее благодарим за любую помощь. J.

ответ

1

Динамически созданные элементы управления теряются при каждой обратной передаче. Я бы рекомендовал добавить таблицу к вашей разметке по следующим причинам:

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

  2. Пользовательские события не запускаются, поскольку пользовательские элементы управления не существуют в разметке, а динамически генерируются.

  3. Нет разницы в скорости (размер страницы). Вы можете переключать видимость в соответствии с вашими потребностями.

  4. Много более чистый, изящное решение.

В любом случае, если вам действительно нужно добавлять таблицы динамически, взглянуть на этот вопрос Dynamic Controls and Postback и этот учебник http://www.4guysfromrolla.com/articles/092904-1.aspx

+1

Благодаря отсортированных проблема, как только я прочитал «Динамически созданные элементы управления теряются на каждом постбэка» Я была функция, создающая таблицу в статусе If Not Page.IsPostBack Then. Мне нужно использовать динамически сгенерированную таблицу, поскольку ее содержимое зависит от данных из базы данных. Спасибо за вашу помощь. – JBoom