The reason that you are getting the last value because you are updating/overwriting the lblAssId.Text in your loop.
You can solve this issue either by adding each value to a list and display the values from the list. Or add the last label value to the existing Session.
Like
Session["AssId"] = Session["AssId"].ToString() + " " + lblAssId.Text;
Or
List<string> AssIds = new List<string>();
for (int i = 0; i < grdApproval.Rows.Count; i++)
{
LinkButton lblAssId = (LinkButton)grdApproval.Rows[i].FindControl("lnkAssId");
AssIds.Add(lblAssId.Text);
}
Sesion["AssId"] = AssIds;
Then write all the values in the list with a foreach or for loop.
Good luck,
OI