santoshreddy.s Ответов: 1

Как получить доступ к значениям из динамически создаваемых HTML-элементов управления в ASP.NET


I have created few HTML controls dynamically on Page load.
My Code looks like this:

<pre>Protected Sub Page_Load(sender as Object, e As EventArgs) Handles Me.Load
      Dim sb As New StringBuilder
      Dim i as Integer = 0
      sb.Append("<table class ='tabledata' id='tblContent'>")
        For Each item As myObject In myList
            i += 1
            sb.Append("<tr><td>")            
            sb.Append("<textarea runat='server' id=txt_comments" & i & " 
                        name='txt_comments' rows='5' cols='60'></textarea></td>")          
            sb.Append("</tr>")
         Next        
        sb.Append("</table>")
        myDiv.InnerHtml = sb.ToString 
      
     End Sub  


Из приведенного выше кода,
Я творю
<textarea>
HTML динамически управляет загрузкой страницы с помощью stringbuilder и, наконец, ассимилирует эту строку с моим div, который присутствует на странице .aspx

<div id="myDiv" runat="server">


Я могу просматривать свои динамически созданные элементы управления при загрузке страницы.

Теперь я хочу получить доступ к значениям из этих текстовых полей в событии нажатия кнопки(Сохранить).

Как мне это сделать?
Кто-Нибудь Поможет?
Заранее спасибо.


Что я уже пробовал:

Я попробовал использовать страницу.Метод FindControl. Но он выбрасывает ошибки нулевой ссылки.

Gerry Schmitz

Сказать, что вы "использовали" метод (FindControl); "но он не сработал"; не особенно "информативно".

Может быть, мы "угадаем" некоторые ответы, и вы побегаете вокруг?

1 Ответов

Рейтинг:
2

F-ES Sitecore

Забудьте об атрибуте "runat", который не работает с созданными таким образом элементами управления, которые фактически являются базовыми элементами управления html. Во-вторых, вам нужно уникальное имя для элемента, а также сделать его таким же, как идентификатор

sb.Append("<textarea id=txt_comments" & i & " 
                        name='txt_comments" & i & "' rows='5' cols='60'></textarea></td>")   


В вашем коде-позади вы можете прочитать значение из запроса.Коллекция форм на основе названия

Request.Form("txt_comments1")


Альтернативой было бы фактически создать серверные элементы управления, такие как текстовое поле, и добавить его в коллекцию элементов управления страницы. Если вы загуглите "asp.net создание динамических элементов управления" вы найдете множество примеров того, как это сделать.