You'll have to put the data in a hidden variable as well as on the screen in a table. So when you submit the form you could use jQuery to read the data from the table and store it in a hidden field like;
<form id="form1" runat="server">
<asp:HiddenField ID="MyData" runat="server" />
<asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click"/>
<script type="text/javascript">
$(document).ready(function () {
$("#<%=btnSubmit.ClientID%>").click(function () {
var myData = { Products: [{ "ID": 1, "Name": "Product 1" }, { "ID": 1, "Name": "Product 1" }] };
$("#<%=MyData.ClientID%>").val(JSON.stringify(myData));
return true;
});
});
</script>
</form>
Code-behind classes
public class PageData
{
public List<Product> Products;
}
public class Product
{
public int ID;
public string Name;
}
Submit event
protected void btnSubmit_Click(object sender, EventArgs e)
{
string json = MyData.Value;
System.Web.Script.Serialization.JavaScriptSerializer s = new System.Web.Script.Serialization.JavaScriptSerializer();
PageData data = s.Deserialize<PageData>(json);
foreach(Product p in data.Products)
{
}
}