2015-10-02 2 views
0

Итак, я пытаюсь создать две метки и два текстовых поля при нажатии кнопки. Каждый раз, когда я нажимаю кнопку, он должен генерировать новый набор меток и текстовых полей на экране.Как динамически создавать метки и текстовые поля, используя простые для циклов в 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 />")); 
     } 
+0

Они не перезаписываются. На странице не было памяти о том, что вы сделали по коду позади, так что пост-пост только начинается с самого начала. – Aristos

+0

@Aristos: - Как я могу исправить this.and получить желаемый макет, как указано выше – wittyenggs

ответ

0

Каждый раз, когда вы нажимаете кнопку, страница обновляется, поэтому ранее созданное текстовое поле и метка удаляются.

Я хотел бы предложить вам сохранить текстовые поля и метки в List и добавить в коллекцию на каждое нажатие кнопки, а затем отобразить всю коллекцию на кнопке мыши

+0

Можете ли вы написать код, чтобы продемонстрировать, как это сделать. Спасибо – wittyenggs

+0

Возможно, вы можете добавить элементы управления с помощью JQuery, а затем отправить их с помощью Ajax в базу данных, в этой теории ваша кнопка не обновит страницу и у вас не будет проблемы с потерями. –

0

Добавить скрытый ввод кроме кнопки, которая отслеживает количество кликов. Установите это значение в свою переменную button_press, приращение и установите новое значение для скрытого ввода. Это увеличит счет даже тогда, когда страница действительно обновится при каждом нажатии

0

Самый эффективный способ сделать это не на стороне сервера, а на стороне клиента. На первом document.load создайте пару label/textbox.
Когда кнопка нажата, вызовите функцию javascript, которая находится в вашем .aspx, который создаст пару ярлыков/текстовых полей.
Это предотвратит несколько круглых поездок на сервер только ради добавления пары ярлык/текст.
Наконец, я уверен, что вы хотите отправить эти данные на сервер. Вы можете использовать JSON для создания ввода данных в текстовых файлах и передать всю эту информацию щелчком другой кнопки с именем «отправить данные» с помощью функции jQuery, которая говорит с сервером или даже использует XMLHttpRequest javascript, чтобы выталкивать данные с клиента на сервер.
Я знаю, что это звучит тяжело, но вы можете дать ему шанс.

0

Я сделал кнопку прессом переменной статической и все работало нормально. Ключ состоял в том, чтобы сохранить состояние сеанса и сделать его статическим, чтобы я мог его достичь.

Смежные вопросы