Добавить новую строку в GridView без DataBind - PullRequest
5 голосов
/ 07 ноября 2008

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

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

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

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

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

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

Есть идеи?

Ответы [ 2 ]

3 голосов
/ 07 ноября 2008

Я просто могу придумать два варианта. Во-первых, необходимо кешировать исходные результаты, которые вы привязываете в таблицу, и когда вам нужно добавить еще одну строку, вы добавляете datarow в таблицу данных, к которой вы привязываете, а затем привязываете ее к таблице. Если в сетке есть изменения, вам нужно обновить таблицу данных. После внесения всех изменений и нажатия пользователем кнопки «Сохранить» вы можете перебирать таблицу и обновлять базу данных данными.

Это может выглядеть так

Загрузка страниц

  • Получить данные БД и поместить в таблицу
  • Свяжите таблицу с сеткой
  • Хранить таблицу в кеше

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

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

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

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

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

0 голосов
/ 07 ноября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...