| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разработка Windows Forms > добавление ряда в DataGridView |
| Автор: Bogdan1024 25.9.2009, 17:59 |
| У меня есть DataGridView. Его датасорс я склеиваю руками. Он представляет собой DataTable. В UserAddedRow я SQL'ом добавляю в БД строку, возвращаю её ID и присваиваю его добавленной строке (e.Row["ID"].Value). Но когда я клацаю после добавления куда-нибудь ещё я получаю месседж "в колонку ID нельзя добавлять NULL". Я заметил что при добавлении новой строки в моём дататэйбле количество строк не меняется. И ошибка кидается про колонку дататэйбла, а не про колонку датагрида. Я пытался заново собрать дататэйбл в том же обработчике, но у меня вылетает та же ошибка. Так как же правильно добавить строку? |
| Автор: Nestap 25.9.2009, 19:53 |
| Bogdan1024, а как ты ета делаеш? ставь код.... |
| Автор: diadiavova 28.9.2009, 09:32 |
| Структуры в дотнете не могут иметь значение null, а в базах данных соответствующие им типы могут. Проблема решается при помощи класса Nullable http://msdn.microsoft.com/ru-ru/library/system.nullable.aspx Или можно столбцу задать дефолтное значение отличное от null |
| Автор: Bogdan1024 28.9.2009, 21:21 |
Действительно, нельзя добавлять нул. Можно добавлять DBNull. Тут не в этом проблема. Вот алгоритм того, что происходит:
Есть идеи у кого? |
| Автор: Bogdan1024 30.9.2009, 17:40 |
| Иными словами: как добавить ряд если DataGridView.DataSource is DataTable? |
| Автор: Nestap 30.9.2009, 20:48 | ||
| Bogdan1024, eto shto li?
|
| Автор: Bogdan1024 1.10.2009, 16:10 | ||
| Nestap, нед, но спасибо за желание помочь Правильный ответ: вешаем обработчик на DataTable.ColumnChanged:
Таким образом решается и задача добавления, и задача редактирования строк. А на DataTable.UserAddedRow вешать ничего не надо было. |
| Автор: alegn22 19.10.2009, 14:11 |
| На мой взгляд, какая-то странная логика: пользователь еще не закончил ввод новой строки, а Вы уже успели добавить соответствующую строку в БД. А если он впоследствии надумает отменить начатое добавление, то Вам надо будет выполнить обратную операцию удаления строки из БД! А если для строки таблицы определены ограничения NOT NULL для каких-либо колонок, то каким образом, оставаясь в рамках Вашего алгоритма, Вы сможете добавить в БД строку, содержащую только ID? Мне кажется, что стоило бы сначала позволить пользователю завершить процесс добавления новой строки, а потом уже сохранять ее в таблице БД. |