Проблема, которую вы описываете, может быть связана с тем, как DataGridView пытается «совместно использовать» строки для экономии памяти.Вы можете прочитать больше о поведении здесь: http://msdn.microsoft.com/en-us/library/ha5xt0d9.aspx
Различные программные и пользовательские действия могут привести к тому, что строка станет нераздельной.Из документов видно, что это приводит к созданию новой (не общей) строки.Если бы все строки поддерживались как отдельные объекты в сетке, у вас могли бы возникнуть серьезные проблемы с производительностью.
Можно ли установить связанный объект для базового элемента данных, с которым связана строка?