Как динамически генерировать метки и текстовые поля, используя простые циклы for в C#
Итак, я пытаюсь создать две метки и два текстовых поля одним нажатием кнопки. Каждый раз, когда я нажимаю кнопку, она должна генерировать новый набор меток и текстовых полей на экране.
Вот макет
Label 1 Textbox 1 Label 2 Textbox 2 Button
При каждом нажатии кнопки должно происходить следующее
1 клик
Label 1 Textbox 1 Label 2 Textbox 2 Button
Label 3 Textbox 3 Label 4 Textbox 4
2 клика
Label 1 Textbox 1 Label 2 Textbox 2 Button
Label 3 Textbox 3 Label 4 Textbox 4
Label 5 Textbox 5 Label 6 Textbox 6
Как я могу достичь этого.
В настоящее время я вижу только один ряд ярлыков и текстовых полей, они, вероятно, перезаписываются в одном и том же месте.
Вот мой код.
button_press++;
for (int i = 0; i < button_press; i++)
{
Debug.WriteLine("Hello");
Label book_number = new Label();
book_number.Text = "Book Number";
book_number.Style["Position"] = "Relative";
book_number.Style["Top"] = "0px";
book_number.Style["Left"] = "0px";
TextBox textBox_book_number = new TextBox();
textBox_book_number.Style["Position"] = "Relative";
textBox_book_number.Style["Top"] = "0px";
textBox_book_number.Style["Left"] = "10px";
Label amount = new Label();
amount.Text = "Amount";
amount.Style["Position"] = "Relative";
amount.Style["Top"] = "0px";
amount.Style["Left"] = "30px";
TextBox textBox_amount = new TextBox();
textBox_amount.Style["Position"] = "Relative";
textBox_amount.Style["Top"] = "0px";
textBox_amount.Style["Left"] = "45px";
form1.Controls.Add(book_number);
form1.Controls.Add(textBox_book_number);
form1.Controls.Add(amount);
form1.Controls.Add(textBox_amount);
form1.Controls.Add(new LiteralControl("<br />"));
}
4 ответа
Каждый раз, когда вы нажимаете кнопку, страница обновляется, поэтому ранее созданные текстовое поле и метка удаляются.
Я бы посоветовал вам сохранять текстовые поля и метки в списке и добавлять их в коллекцию при каждом нажатии кнопки, а затем отображать всю коллекцию при нажатии кнопки.
Добавьте скрытый ввод помимо кнопки, которая отслеживает количество кликов. Установите это значение для вашей переменной button_press, увеличьте и установите новое значение для скрытого ввода. Это увеличит количество, даже когда страница обновляется при каждом клике.
Я сделал переменную нажатия кнопки статической и все работало нормально. Ключ должен был сохранить состояние сеанса, и сделав его статичным, я смог бы его достичь.
Самый эффективный способ сделать это не на стороне сервера, а на стороне клиента. На первом document.load создайте пару метка / текстовое поле.
Когда кнопка нажата, вызовите функцию javascript, которая находится в вашем.aspx, которая создаст пару метка / текстовое поле.
Это предотвратит несколько обращений к серверу только ради добавления пары метка / текст.
Наконец, я уверен, что вы хотите отправить эти данные на сервер. Вы можете использовать JSON для построения ввода данных в текстовых полях и передавать всю эту информацию одним нажатием другой кнопки, называемой "отправить данные", с помощью функции jQuery, которая обращается к серверу, или даже использовать XMLHttpRequest javascript для передачи данных от клиента к сервер.
Я знаю, это звучит сложно, но вы могли бы попробовать.