Member 12194656 Ответов: 2

Как получить текст динамического текстового поля, а затем обновить другой C#?


Привет,

В c# asp.net веб-приложение,
Я динамически создаю таблицу и текстовые поля в ячейке на каждой строке таблицы.

Мой вопрос таков

1. Как я могу использовать textchanged для поиска текста в одном текстовом поле на основе идентификатора текстового поля?

2. Как я могу обновить другое текстовое поле в той же строке на основе первого значения текстового поля?

Я пытался гуглить его весь день, но безуспешно, заранее спасибо.

Зд

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

private void GenerateTable(int numOfColumns, int numOfRows,  Table tb)
    { 

for (int i = 0; i < numOfRows; i++)
            {
                TableRow row = new TableRow();
                row.Width = new Unit("100%");
                

                for (int j = 0; j < numOfColumns; j++)
                {
                    TableCell cell = new TableCell();

                        TextBox tb = new TextBox();

                        // Set a unique ID for each TextBox added
                        tb.ID = "Row_"+ i + "Col_" + j;
                        tb.Text = "";
                            tb.TextChanged += new EventHandler(textBox_TextChanged);

                        cell.Controls.Add(tb);

                    
                    }


tb.Rows.Add(row);
}
}


    private void textbox_TextChanged(object sender, EventArgs e)
    {
        TextBox tb = (TextBox)FindControl("Row_0Col_0");
        Response.Write(tb.Text);
// I cannot even retrieve the text

    }

Karthik_Mahalingam

используйте для этого javascript.

F-ES Sitecore

Вызываете ли вы GenerateTable на каждом постбэке?

Member 12194656

Привет, да, но теперь я получил сообщение "несколько идентификаторов", пожалуйста, смотрите ниже. Спасибо снова.

2 Ответов

Рейтинг:
2

Member 12194656

Спасибо всем.

Я выясняю это, основываясь на всех здешних советах. Хороших вам выходных!


Рейтинг:
14

Nayan Ambaliya

Привет,

Вам нужно будет установить свойство autopostback текстового поля как "True" и привязать обработчик событий к динамически генерируемому текстовому полю.

Предположим, вы добавляете текстовое поле следующим образом;

TextBox t = new TextBox();
t.ID = i.ToString();
t.TextChanged += new EventHandler(t_TextChanged);
t.AutoPostBack = true;
this.pnl.Controls.Add(t);


Затем вы добавляете обработчик событий для динамически генерируемого текстового поля следующим образом;

TextBox t = (TextBox)sender;
string textvalue = t.Text;
Response.Write("Textbox with id: " + t.ID + " event called<br>");
</br>


Надеюсь, это поможет.


Member 12194656

Спасибо за ваш ответ.
Я получил сообщение об ошибке о том, что были найдены несколько идентификаторов текстовых полей, потому что мне нужно восстановить все текстовые поля на каждой обратной передаче.

Было найдено несколько элементов управления с одинаковым идентификатором "ROW_0Col_0". FindControl требует, чтобы элементы управления имели уникальные идентификаторы.

Есть ли вообще возможность сбросить все идентификаторы? Пожалуйста, помогите, большое спасибо.