Ваш индекс не меняется.
Вы указываете dataGridMain.Rows.Count -1 как индекс
Похоже, что число не меняется, похоже, вам нужно сначала получить индекс, сохранить его в переменной и затем добавить значения:
int n = dataGridMain.Rows.Add();
//now use n
dataGrid.Rows[n].Cells[0].Value = a.date;
//more code