| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разработка Windows Forms > Хочу, чтоб NULL был NULL, а не 0! |
| Автор: Papirus 3.7.2006, 15:56 |
| VS.NET2005 & SQL server 2000 Такая вот байда. В БД есть таблица, в которой одно из полей типа smallint и большинство записей имеют неопределенное значение NULL. В DataGridView - в этом поле вместо Null отображается 0. Более того при обращению к записи в таблице датасета это поле также возвращает 0 вместо NULL. PreviewData - отображает пустые ячейки там где NULL. Заранее благодарен за помощь! |
| Автор: mr.DUDA 3.7.2006, 21:40 |
| Чтобы вместо "0" были другие значения - настраиваем свойство DefaultValue у колонки таблицы. Или, если значение уже приходит по select-запросу - настраиваем соотв. свойство в настройках поля таблицы SQL Server. Если же нужно проверить, что именно находится в колонке (пустое значение или 0) - сравниваем значение dataRow[index] с DBNull.Value (пресловутый NULL). Если типы не совпадают - например, в колонке лежит int а нет DBNull - значит имеем дело с заполненным полем таблицы. |
| Автор: Papirus 4.7.2006, 08:53 | ||
В 2003 этот код срабатывал корректно - в 2005 rw.Item("PositionChild")=0 почему-то. DefaultValue - это ведь для новой записи?! А у меня существующие отображаются как 0, а не как пустая ячейка и судя по всему такое значение подставляется вместо NULL уже в таблице датасета. У меня могут быть и 0 значения, но пользователь должен видеть, что в ячейке 0 или NULL. Добавлено @ 08:56 Приходит NULL. |
| Автор: mr.DUDA 4.7.2006, 11:05 |
| Можно попробовать копнуть в сторону DataGridViewCellStyle.NullValue |
| Автор: mr.DUDA 4.7.2006, 16:12 |
| Всё замечательно работает: |
| Автор: Papirus 5.7.2006, 12:03 |
| Спасибо, mr.DUDA! Всему причиной моя тупость - дело и впрямь оказалось в DefaultValue (=0) таблицы БД. И значений =0 оказалось там навалом. При импорте этот дефолт и сработал, а я то ориентировалсья на оригинал, где 0 просто нет. Просто так совпало, что в PreviewData первыми отображались немногие данные, где значение поля было именно NULL, а в гриде - 0. Прошу извинить форумян за ложный аларм! |