HanuBaba Ответов: 4

Получение текста динамически создаваемого текстового поля


Всем привет!
Я делаю ASP.net веб-приложение, в котором я динамически создаю текстовое поле.

i=0;
public void dynamic()
{
    TextBox txt = new TextBox();
    txt.ID = i.ToString();
    txt.MaxLength = Convert.ToInt32(lenth);
    TableCell td2 = new TableCell();
    td2.Controls.Add(txt);
    tr.Cells.Add(td2);
    table.Rows.Add(tr);
    i++;
}
panel1.Controls.Add(table);

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

Заранее спасибо!

[edit]добавлен блок кода для сохранения форматирования-OriginalGriff [/edit]
[edit]отступ кода, грамматика и орфография, textspeak удалены-Манфред Р. Бихи [/edit]

4 Ответов

Рейтинг:
2

Md Nazmoon Noor

foreach (Control c in panel1.Controls) {
  if (c is TextBox) {
    TextBox txt = (TextBox)c;
    string str = txt.Text;
  }
}



Или если вы знаете идентификаторы ваших текстовых полей.
TextBox txt = (TextBox)panel1.FindControl("txt");

Используйте txt.Текст.


Olivier Levrey

Хорошо, мой 5. (Я отредактировал только для того, чтобы исправить предварительные теги). Но если существует более одного текстового поля, первого цикла может быть недостаточно. Второе решение кажется более надежным.

Member 14369041

Почему приведенный ниже вызов onchange не работает
текст.Атрибуты.Добавить ("onchange", " text_change(text)");
Он отлично работает для функции JS-файла.

Рейтинг:
2

Brij

Есть несколько способов сделать это. Во-первых, я бы предложил создавать ваши динамические текстовые поля только в функциях InIt или Pre_Init.
Теперь, чтобы получить данные, если вы знаете идентификаторы, то вы можете получить прямой доступ или найти все элементы управления в вашей панели, найти каждое текстовое поле и получить значение для каждого текстового поля во время сохранения


Olivier Levrey

Хорошо. Но предоставление некоторого кода может быть еще более полезным.

Рейтинг:
0

Olivier Levrey

Я добавлю еще одну возможность.
При создании текстового поля вы можете прикрепить обработчик к текстовому полю. TextChanged событие для сохранения обновленной переменной:

public void dynamic()
{
    TextBox txt = new TextBox();
    ...
    //add the event handler here
    txt.TextChanged += new EventHandler(System.EventHandler(this.txt_TextChanged));
    ...
}
//add a variable to keep the textbox content
string yourText = string.Empty;
//update the variable as soon as the content of the text box is changed
private void txt_TextChanged(object sender, EventArgs e)
{
    yourText = (sender as TextBox).Text;
}


Выберите решение, которое вы предпочитаете ;)


Monjurul Habib

Это был бы и мой ответ, мой 5+.

Member 10398915

Полезно! Спасибо. :)

Рейтинг:
0

kalsa

Это рабочий код.

protected void Page_Load(object sender, EventArgs e)
    {
	    TextBox Tbox = (TextBox)pnlGrid.FindControl("txtSearch");        
        Tbox.TextChanged += new EventHandler(txtSearch_TextChanged);      
	}
	
	protected void txtSearch_TextChanged(object sender, EventArgs e)
    {
        GridView grid = (GridView)pnlGrid.FindControl("AspGrid");
        TextBox Tbox = (TextBox)pnlGrid.FindControl("txtSearch");
        string searchText = Tbox.Text;
    }