The chance are it's the comparison that is failing: the DataRow.ItemArray[index] value will be an object - which means that whatever you compare it with will be a reference comparison. And a reference comparison doesn't care about the content - it only cares that the two items are the same object (they reference the same object on the heap). If you like, it's like having two people called "John Smith" - the names are the same (they have the same value) but one has a moustache and the other doesn't which means they are different people (they have different references).
The code you are using compares to see if the two men are the same person, you want a check that compares them for having the same name!
Try this:
if (row1.ItemArray[cellIndex].ToString() != row2.ItemArray[cellIndex].ToString())
And see if that works any better.