2011-02-04 3 views
1

Я хочу создать «таблицу», которую пользователь заполнит, которая имеет неизвестное количество строк.Динамически добавить строку в GridView/DataGrid/Repeater?

Чтобы проиллюстрировать это, допустим, что нужно ввести данные из квитанции после поездки по магазинам - то есть количество строк (или элементов) будет неизвестно.

Чтобы добиться этого, я хочу создать сетку с одной строки и двух столбцов, содержащих текстовые поля для ввода имени элемента и цена:

+ ------- + ---- ----- +
+ Item + Цена +
+ ------- + --------- +
+ фасоль + 0,99 +
+ ------ - + --------- +

Затем, после того как первая строка была завершена, я wan t, чтобы генерировать другую строку «на лету» и так далее.

Какой из них лучше всего подходит для этого? Я довольно новичок в asp.net, поэтому не уверен, что я должен использовать Gridview/DataGrid/Repeater или что-то еще. (Не уверен, имеет ли он какое-либо значение, но элемент texbox имеет связанный с ним Ajax AutoCompleteExtender.)

Любые указатели были бы наиболее желанными.

EDIT

Одна вещь, которую я забыл упомянуть о том, что GridView (или любой другой) не имеет никаких данных, связанные с ним, когда он будет загружен. Не уверен, что это повлияет на решение.

ответ

0

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

+0

Есть ли способ добавить строки в GridView во время выполнения? – Ben

2

GridViews не очень хороши при добавлении строк inline. Вам, вероятно, придется немного взломать. Возможно, вы сможете настроить источник данных в виде сетки, чтобы в конце ваших реальных данных всегда была еще одна пустая строка, а затем просто убедитесь, что вы установите последнюю строку в сетке в режиме редактирования каждый раз, когда gridview завершает привязку. Тогда вам придется перехватить действие «Обновить» и сделать его фактически «Вставка» вместо обновления. Тогда возникает вопрос, хотите ли вы также разрешить пользователю редактировать существующие строки: при редактировании существующей строки вам нужно удалить «пустую» строку, потому что вы не можете одновременно редактировать две редактируемые строки. Это сложно, но вы могли бы это сделать.

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

Я не уверен, что я бы выбрал в этот момент.

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