Execute the code that dynamically adds the HiddenField inside the PreInit event, and you should be good to go.
Check the MSDN article on the ASP.NET Page Life Cycle. Especially the PreInit event section:
Use this event for the following:
...
- Create or re-create dynamic controls.
protected void Page_PreInit(object sender, EventArgs e)
{
// whatever other code you have up here
HtmlTableCell tCellJson= new HtmlTableCell();
HiddenField hdnJson = new HiddenField();
hdnJson.ID = "hdnJson"+ count;
tCellJson.Controls.Add(hdnJson);
tRow.Cells.Add(tCellJson);
}