Как известно, в составе Visual Studio 2005 появился новый элемент управления – DataGridView, который, в отличие от просто DataGrid, обладает неплохой функциональностью и позволяет во многих случаях обойтись без сторонних компонентов, при этом не дописывая кучу кода.
Вот и мы используем его в своих проектах. В одном из них ввод и редактирование данных осуществляется непостредственно в самом DataGridView. Одна из возникших сложностей заключалась в особенностях работы со значениями null и DBNull.Value. Как раз для этого предназначены свойства NullValue и DataSourceNullValue.
Свойство NullValue позволяет задать значение, которое будет отображаться в ячейке, свойство Value которой содержит null или DBNull.Value. По умолчанию, для текстовых ячеек это свойство равно String.Empty. Свойство NullValue работает и в обратную сторону – при парсинге введенного в ячейку значения. Таким образом, при удалении содержимого ячейки, в источник данных запишется не пустая строка, а значение DBNull.Value. Если соответствующее поле источника данных не позволяет вносить значение NULL, произойдет ошибка.
Чтобы этого избежать, можно использовать другое свойство – DataSourceNullValue. Это свойство позволяет задать значение, которое будет отправлено источнику данных при помещении пользователем в ячейку null-значения. Т.е. в нашем случае свойству DataSourceNullValue надо присвоить значение String.Empty. Тогда, при очистке ячейки, в источник данных будет записываться пустая строка.
Подробное описание контрола DataGridView на русском:
DataGridView. Новый контрол в составе Framework 2.0
DataGridView. Новый контрол в составе Framework 2.0. Часть 2.