Привязка gridviews к viewstate до возможности записи в базу данных - PullRequest
2 голосов
/ 11 декабря 2008

Я недавно начал работать над проектом, который имеет много видов сетки на одной странице. Во время создания новой записи пользователь должен иметь возможность добавлять / удалять / редактировать эти виды сетки, а затем сохранять в базе данных в конце. Очевидно, что проблема заключается в том, что нет источника данных для привязки данных до тех пор, пока они не будут записаны в базу данных.

Эти данные представляют отношение 1 .. *, поэтому данные gridview не могут быть записаны в базу данных, пока не будет создана родительская запись.

Лучший способ, который я нашел для решения этой проблемы, - это использовать viewstate. Однако это решение не кажется мне идеальным. Я также вынужден вручную создать функциональность вида сетки с помощью OnDeleting, OnUpdating и т. Д., Чтобы я мог управлять связыванием состояния просмотра с видом сетки.

Есть ли у кого-нибудь какие-либо предложения о том, как лучше справиться с этой ситуацией, кажется, это было бы обычным делом?

UPDATE:

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

Ответы [ 2 ]

1 голос
/ 11 декабря 2008

Используйте DataSet в качестве промежуточного соединения с вашим источником данных. Заполните DataSet своими данными, а затем привяжите свой GridView к DataSet, установив в GridView DataMember имя таблицы, к которой он должен быть привязан.

Когда пользователь обновляет таблицы, он добавляет / изменяет записи в DataTables в DataSet. Когда пользователь закончит редактирование и нажмет «Сохранить», ваш код сможет обновить базу данных из наборов данных, либо автоматически, используя DataAdapter, либо вручную просматривая RowState строк в DataTables.

0 голосов
/ 11 декабря 2008

Используйте DataAdapter и набор данных. Вызовите метод fillschema в адаптере для создания метаданных de (столбцы, ограничения, отношения и т. Д.) В наборе данных. свяжите созданные таблицы данных с различными видами сетки. обновите вручную, проверяя каждое состояние строки строки в каждой таблице или вызывайте метод обновления адаптера, чтобы сделать это автоматически. Если вы делаете это автоматически, вам нужно определить команды для вставки, удаления и обновления в адаптере.

...