2008-11-07 2 views
5

У меня есть GridView, который позволяет редактировать значения в каждом столбце в каждой строке все время. Пользователь вводит все свои изменения, щелкает «Сохранить один раз», и все изменения совершаются.Добавить новую строку в GridView без DataBind

Пользователь должен также иметь возможность нажать кнопку «Создать», добавить новую строку в GridView (да, она должна отображаться в реальном GridView), ввести любые данные, которые они хотят, нажать «Сохранить» и внести все изменения перейдите в базу данных.

Теперь. Вот случай пользователя, который меня бросает: пользователь приходит на страницу, вносит несколько изменений в несколько существующих строк, а затем должен добавить новую строку, ввести данные в новую строку, нажать «Сохранить» и внести все изменения в базу данных ,

Тем не менее, единственные пути, которые я видел, чтобы добавить новую пустую строку, включают в себя восстановление GridView, что означает, что все их изменения будут потеряны. Это, очевидно, нехорошо.

Итак, мой вопрос: какие подходы к добавлению новой, пустой, редактируемой строки в GridView без необходимости повторной привязки GridView?

Единственное, что я могу думать о том, что на событии «Новый щелчок» выберете все данные из GridView (включая потенциальные изменения пользователя), сохраните его в ViewState (или что-то еще), добавьте новый строка, повторно заполнить сетку. Это для меня кажется немного взломанным, но это должно позволить мне отключить ViewState в GridView.

Любые идеи?

ответ

3

Как раз от моей головы я могу представить два варианта. Первый заключается в том, чтобы кэшировать исходные результаты, которые вы привязываете к сетке, и когда вам нужно добавить еще одну строку, вы добавляете datarow к каталогу данных, к которому вы привязываетесь, и затем привязываете его к сетке. Если в сетке есть изменения, вам необходимо обновить данные. После того, как все изменения были сделаны, и пользователь нажимает кнопку сохранения, вы можете выполнять итерацию по таблице и обновлять БД данными.

Это может выглядеть следующим образом

Страница Нагрузки

  • Получить DB данных и поместить в таблицу
  • Bind таблица к сетке
  • магазина стол в кеш

Когда пользователь запрашивает новую строку

  • Получить кэшированные объект данных.
  • Обновить все строки, которые были изменены
  • Добавить пустую строку Привязать к сетке

Когда пользователь сохраняет сетку

  • Получить кэшированный объект.
  • сделать последний набор обновлений
  • Loop через ряд и обновление БД

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

0

Вы можете динамически добавлять новую строку через javascript, а в команде save искать новые добавленные строки. Это довольно часто.

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