.ToString() returns a string.
String.Length returns an integer.
Value types will never equal null. So its like checking if 0 == null which it never will.
If you want to check if the column is null, you have to do it WAY before you call .ToString, since a null value in the field will cause a null reference exception when it tries to call .ToString on a null.
if (dataGridView2.Rows[counter].Cells["Price"].Value != null &&
dataGridView2.Rows[counter].Cells["Price"].Value.ToString().Length > 0)