2009-11-05 4 views
0

У меня есть база данных с 2 записями Id и описанием.dymanically увеличивая количество текстовых полей в webforms

То, что я хочу сделать, это попытаться связать это к столу так, например

<tr> 
    <drop down select list with ids available> <textbox> 
</tr> <add button> 

Таким образом, пользователь может выбрать идентификатор из выпадающего списка, введите описание и нажмите кнопку добавить рядом это будет дублировать этот блок динамически, чтобы они могли вводить сколько угодно. Каков наилучший способ сделать это в веб-формах? DetailsView? Я не уверен, как сделать это динамически добавлять html-блоки? Любая помощь будет оценена по достоинству.

ответ

0

псевдокод:

foreach description 
    create new tablerow 
    create a table cell in the row with the description as a label 
    create a table cell in the row with the id dropdown as a combobox 
    add the tablerow to the table.rows collection 

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

+0

Хотелось бы, чтобы я мог сделать встроенный код, например MVC, но это веб-формы, и я не могу делать кодовые блоки внутри таблицы :(если только внутри него не находится – David

0

Я бы держался подальше от любых встроенных элементов управления (т. Е. DetailsView, FormView) для чего-либо другого, кроме простых форм CRUD, так как это не намного больше усилий, чтобы вручную создавать свои собственные формы ввода данных.

Динамическое добавление элементов управления в ASP.NET Webform (и они работают по постбэки) довольно хитрый, чтобы получить права, но в общем вам нужно сделать что-то вроде:

  1. Добавить который будет хранить ваши динамические строки.
  2. Создайте свойство (хранимое в ViewState или ControlState), чтобы сохранить количество доступных строк.
  3. Обработайте соответствующее событие нажатия кнопки «добавить», чтобы увеличить свойство count и добавить новую строку таблицы и дочерние элементы управления.
  4. Внутри события OnInit создайте количество строк таблицы, хранящихся в свойстве count.

Динамически созданные элементы управления не сохраняются через обратные передачи, поэтому вам нужно создать их при каждой обратной передаче во время использования метода OnInit. Пока элементы управления воссоздаются в правильном порядке и с одинаковыми идентификаторами, они будут повторно заселены при обратной передаче.

Поскольку вы динамически добавляете элементы управления, вам может потребоваться установить для свойства EnableEventValidation значение false.

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