So I guess I was misunderstanding how the selected values from controls are loaded. I ended up creating a list of the user's answers and saving it into a Session variable. When I loaded up my questions between pages I would check if the question/answer pair existed in that session list and then loaded up the value from there. My RepeaterItemEvenHandler looks like this now and does the trick perfectly:
protected void RepeaterItemEventHandler(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
RadioButtonList questionsRadioButtonList = (RadioButtonList)e.Item.FindControl("QuestionsList");
ExamQuestion exam = (ExamQuestion)e.Item.DataItem);
if (!String.IsNullOrEmpty(exam.exm_AnswerA))
{
ListItem item = new ListItem();
item.Text = exam.exm_AnswerA;
item.Value = "A";
questionsRadioButtonList.Items.Add(item);
}
//loading the rest of the list items for the radiobuttonlist goes here...
//here is where I load the answer into the radio button if it was answered before
if (Session["AnswersList"] == null) throw new Exception("Session variable not set properly: AnswersList");
var answers = (List<UserAnswer>)(Session["AnswersList"]);
if (answers.FindIndex(a => a.QuestionID == exam.exm_ID.ToString()) > -1)
{
questionsRadioButtonList.SelectedValue =
answers.Find(a => a.exm_QuestionID == exam.exm_ID.ToString()).exm_UserAnswer;
}
}
}
This is a link with an easy to follow tutorial that helped with creating my exam if anyone needs that kind of reference: http://www.asp.net/web-forms/videos/building-20-applications/lesson-12-building-a-quiz-engine-2