A: 

The most likely cause for dynamic controls not having a value is that they were either created after ViewState has been loaded, or read before.

Generally speaking, dynamic controls should be created during the PageInit event, and read during or after the PageLoad event.

AaronSieb
A: 

I moved my dynamic table generation function calls into Page_Init; however, I am still getting the same problem. The check boxes are read when the user hits a submit button, which is well after the page load event.

The checkbox controls need to be created in Page_Init (and recreated on each postback), or they won't interact properly with ViewState. Once they've been created, they can have their values set or read in any control event.
AaronSieb