It occurs when an object refers null. Do u Know on which line it throwing that exception. Check by debugging in these 3 lines.......
int pro_id = Convert.ToInt32(GridView1.DataKeys[row.RowIndex][0]);
int quantity = Convert.ToInt32((row.FindControl("txtquantity") as TextBox).Text);
float price = float.Parse((row.FindControl("price")).ToString());
1.If it is in first line then row index is wrong or it returns null value.
2.If it is in second line then
txtquantity is not availabe. Remember it is case sensitive.
3.If it is in third line then
price is not availabe. Remember it is case sensitive.