no se puede agregar dinámicamente más de un control de servidor en asp.net

Hola, estoy realmente atascado en una de mis tareas de desarrollo desde hace un par de días y no puedo saber exactamente qué está pasando. Por favor ayuda.

Estoy tratando de agregar filas dinámicamente a la página web de la siguiente manera. Quiero usar el control del servidor. Pero no puedo agregar más de una fila.

No hubo suerte aunque utilicé la variable de sesión. Por favor ayuda por favor :)

----------------- archivo aspx ---------------

<div>
    <asp:Table ID="tbl" runat="server">
        <asp:TableRow ID="rw0">
            <asp:TableCell ID="c01" Width="100px">
                <asp:CheckBox runat="server" ID="chk0" />
            </asp:TableCell>
            <asp:TableCell ID="c02" Width="100px">
                <asp:TextBox runat="server" ID="txt0" />
            </asp:TableCell></asp:TableRow>
        <asp:TableRow ID="rw1">
            <asp:TableCell ID="c11" Width="100px">
                <asp:CheckBox ID="chk1" runat="server" />
            </asp:TableCell><asp:TableCell ID="c12" Width="100px">
                <asp:TextBox runat="server" ID="txt1" />
            </asp:TableCell></asp:TableRow>
    </asp:Table>
    <asp:Button ID="btn1" runat="server" Text="Add Row" OnClick="addRow" />
</div>

--------------------- C # code behind -------------------------- ----

protected void addRow(object sender, EventArgs e)
    {

        int num_row = new int(); //checkpoint
        num_row = (tbl.Rows).Count;

        if (Session["tables"] != null)
        {
            tbl =  (Table)Session["tables"];
        }


        TableRow row = new TableRow();
        TableCell cell1 = new TableCell();
        TableCell cell2 = new TableCell();
        TextBox tb = new TextBox();
        CheckBox cb = new CheckBox();

        row.ID = "rw" + num_row;

        cell1.ID = "c" + num_row + "1";
        cell2.ID = "c" + num_row + "2";

        tb.ID = "txt" + num_row;
        tb.EnableViewState = true;
        cb.ID = "chk" + num_row;

        cell1.Controls.Add(tb);
        cell2.Controls.Add(cb);

        row.Cells.Add(cell1);
        row.Cells.Add(cell2);

        tbl.Rows.Add(row);
        Session["tables"] = tbl;


    }

Respuestas a la pregunta(2)

Su respuesta a la pregunta