This line
sum+ = Convert.ToInt16(GridView1.Rows[i].Cells[2].Text);
is not working, as the data is not in your gridview's cell.You are using the template fields and want to access the data from there.
Replace the above line with -
sum+ = Convert.ToInt16(((Label)GridView1.Rows[i].Cells[2].FindControl("Label1")).Text);
I would also suggest you to use the RowDataBound event handler of the gridview as an alternative.
There you will just need to tweak it as -
sum+ = Convert.ToInt16(((Label)e.Row.Cells[2].FindControl("Label1")).Text);
HTH
Rajeev
Please vote and mark the answer as accepted if this helps.