I\'ve got a DataGridView control in a Windows forms application. There are four columns with string data and three with DateTime data. I\'m adding the rows programmatically
Updated Answer: After looking at your posted answer, I see that you're checking for DBNull.Value in the cells. That may be the source of your problem since DBNull.Value can't be cast to a DateTime. If you're programmatically adding the rows, try replacing DBNull.Value with null (Nothing).
Original Answer: Try doing this for each column that holds DateTime data, preferably before any data is loaded:
myDateTimeColumn.ValueType = GetType(DateTime)
According to MSDN, the ValueType property is "used when filtering or sorting the columns with respect to the contents of their cells." So I would be sure to set it for any column that allows sorting.
With this property set, the grid can be sorted on a column that has nulls and will force inserted/updated cells to be converted to DateTime.