In a GridControl, the only column count is given by grid.ColCount. There is no concept of a varying number of columns per row. All rows can hold grid.ColCount entries, and the grid does not track whether some rows have all cells populated and some do not.
You could loop thru the grid.Data object and test what entried are null.
for(int row = 1; row <= this.grid.RowCount; ++row)
{
for(int col = 1; col <= this.grid.ColCount; ++col)
{
//if grid.Data[row, col] == null, the cell is empty
}
}