![]() |
Модераторы: gambit, Partizan |
![]() ![]() ![]() |
|
Bogdan1024 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1436 Регистрация: 28.9.2005 Где: Киев Репутация: 1 Всего: 13 |
У меня есть DataGridView. Его датасорс я склеиваю руками. Он представляет собой DataTable.
В UserAddedRow я SQL'ом добавляю в БД строку, возвращаю её ID и присваиваю его добавленной строке (e.Row["ID"].Value). Но когда я клацаю после добавления куда-нибудь ещё я получаю месседж "в колонку ID нельзя добавлять NULL". Я заметил что при добавлении новой строки в моём дататэйбле количество строк не меняется. И ошибка кидается про колонку дататэйбла, а не про колонку датагрида. Я пытался заново собрать дататэйбл в том же обработчике, но у меня вылетает та же ошибка. Так как же правильно добавить строку? -------------------- ![]() |
|||
|
||||
Nestap |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 221 Регистрация: 10.10.2008 Репутация: нет Всего: 0 |
Bogdan1024,
а как ты ета делаеш? ставь код.... --------------------
<? echo "Nestap";?> |
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 16 Всего: 142 |
Структуры в дотнете не могут иметь значение null, а в базах данных соответствующие им типы могут. Проблема решается при помощи класса Nullable
http://msdn.microsoft.com/ru-ru/library/system.nullable.aspx Или можно столбцу задать дефолтное значение отличное от null -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
Bogdan1024 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1436 Регистрация: 28.9.2005 Где: Киев Репутация: 1 Всего: 13 |
Действительно, нельзя добавлять нул. Можно добавлять DBNull. Тут не в этом проблема. Вот алгоритм того, что происходит:
Есть идеи у кого? -------------------- ![]() |
|||
|
||||
Bogdan1024 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1436 Регистрация: 28.9.2005 Где: Киев Репутация: 1 Всего: 13 |
Иными словами: как добавить ряд если DataGridView.DataSource is DataTable?
-------------------- ![]() |
|||
|
||||
Nestap |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 221 Регистрация: 10.10.2008 Репутация: нет Всего: 0 |
Bogdan1024,
eto shto li?
--------------------
<? echo "Nestap";?> |
|||
|
||||
Bogdan1024 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1436 Регистрация: 28.9.2005 Где: Киев Репутация: 1 Всего: 13 |
Nestap, нед, но спасибо за желание помочь
![]() Правильный ответ: вешаем обработчик на DataTable.ColumnChanged:
Таким образом решается и задача добавления, и задача редактирования строк. А на DataTable.UserAddedRow вешать ничего не надо было. Это сообщение отредактировал(а) Bogdan1024 - 1.10.2009, 16:11 -------------------- ![]() |
|||
|
||||
alegn22 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 1.12.2008 Репутация: нет Всего: нет |
На мой взгляд, какая-то странная логика: пользователь еще не закончил ввод новой строки, а Вы уже успели добавить соответствующую строку в БД. А если он впоследствии надумает отменить начатое добавление, то Вам надо будет выполнить обратную операцию удаления строки из БД! А если для строки таблицы определены ограничения NOT NULL для каких-либо колонок, то каким образом, оставаясь в рамках Вашего алгоритма, Вы сможете добавить в БД строку, содержащую только ID?
Мне кажется, что стоило бы сначала позволить пользователю завершить процесс добавления новой строки, а потом уже сохранять ее в таблице БД. |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Разработка Windows Forms | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |