Hi gurus, thanks for all your past help.
I hope you can help me once more.
On my form, I have both a GridView control and Repeater control.
Reason I am using both is that Repeater allows me to have multi row columns while Gridview doesn't allow that.
Anyway, per the code posted below, if I run that GridView as written in the code, it works fine.
In other words, if I click Add to add more rows, with just GridView, it works because I can add as many rows as I want.
If however, I have both GridView and Repeater, only Repeater works when I click Add but Gridview no longer works. It gives me the following error:
Column 'boatregNum' does not belong to table
Table1.
Any ideas how to fix this?
    <table border="1" style="width:50%;text-align:center">
    <tr>
    <td style="width:100%;vertical-align: text-top;">
    <asp:GridView ID="Gridview1" Style="table-layout: fixed;" runat="server" ShowFooter="true"
        AutoGenerateColumns="false">
        <Columns>
            <asp:BoundField DataField="RowNumber" Visible="false" HeaderText="Row Number" />
            <asp:TemplateField HeaderText="Aircraft Registration #:">
                <HeaderStyle HorizontalAlign="Left" />
                <ItemTemplate>
                    <asp:TextBox ID="txtboatregNum" runat="server" Style="width: 593px;" class="form-control"></asp:TextBox>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="TaxPayer Returned Value <br />As of Jan This Year">
                <ItemStyle HorizontalAlign="Left"></ItemStyle>
                <ItemTemplate>
                    <asp:TextBox ID="txttaxpayerret" runat="server" Style="width: 326px;" class="form-control txttaxpayerret numeric"></asp:TextBox>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="For Tax Office use Only <br /> (Tax Assessirs Value)">
                <ItemStyle HorizontalAlign="Left"></ItemStyle>
                <ItemTemplate>
                    <asp:TextBox ID="txtfortaxofficeonly" runat="server" Style="width: 305px; background-color: #ECECEC;"
                        ReadOnly="true" class="form-control"></asp:TextBox>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="">
                <HeaderStyle Width="70" />
                <ItemStyle Width="70" />
                <ItemTemplate>
                    <asp:Button ID="ButtonAdd" runat="server" Text="Add" OnClick="ButtonAdd_Click" CssClass="grvAddButton" />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:CommandField ShowDeleteButton="True">
                <ControlStyle CssClass="grvDelButton" />
            </asp:CommandField>
        </Columns>
    </asp:GridView></td>
        </tr>
      </table>
    <table border="1" style="width:80%;text-align:center">
    <tr>
    <td style="vertical-align: text-top;" class="auto-style8">
    <asp:Repeater ID="Repeater2" runat="server">
        <ItemTemplate>
         <table style="width:100%;border: 1px solid black;">
             <tr>
              <td style="width:50%;border-collapse: collapse;border: 1px solid black;white-space:nowrap;">
                 Registration "N" #:<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox></td>
                  <td style="text-align:center;border: 1px solid black;">AVIONICS AND EXTRA EQUIPMENT
              </td>
             </tr>
             <tr>
              <td style="width:50%;border-collapse: collapse;border: 1px solid black;white-space:nowrap;">
                 MFG. Name: (make):<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox></td>
                  <td style="width:50%;text-align:center;border: 1px solid black;">
              </td>
             </tr>
             <tr>
              <td style="width:50%;border-collapse: collapse;border: 1px solid black;white-space:nowrap;">
                 Model Name OR #::<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox></td>
                  <td style="width:50%;text-align:center;border: 1px solid black;">
              </td>
             </tr>
             <tr>
              <td style="width:50%;border-collapse: collapse;border: 1px solid black;white-space:nowrap;">
                 Year Built:<asp:TextBox ID="TextBox5" runat="server"></asp:TextBox></td>
                  <td style="width:50%;text-align:center;border: 1px solid black;">
              </td>
             </tr>
             <tr>
              <td style="width:50%;border-collapse: collapse;border: 1px solid black;white-space:nowrap;">
                 Serial Number:<asp:TextBox ID="TextBox6" runat="server"></asp:TextBox></td>
                  <td style="width:50%;text-align:center;border: 1px solid black;">
              </td>
             </tr>
             <tr>
              <td style="width:50%;border-collapse: collapse;border: 1px solid black;white-space:nowrap;">
                 Date Purchased:<asp:TextBox ID="txtdatePurchased" runat="server"></asp:TextBox></td>
                  <td style="width:50%;text-align:center;border: 1px solid black;">
              </td>
             </tr>
             <tr>
              <td style="width:50%;border-collapse: collapse;border: 1px solid black;">
                 Purchased:<asp:radiobuttonlist ID="rblPurchaseType" runat="server" RepeatDirection="Horizontal" TextAlign="Right" style="display:inline;"></asp:radiobuttonlist></td>
                  <td style="text-align:center;border: 1px solid black;">
              </td>
             </tr>
             <tr>
              <td style="width:50%;border-collapse: collapse;border: 1px solid black;white-space:nowrap;">
                 Cost:<asp:TextBox ID="TextBox9" runat="server"></asp:TextBox></td>
                  <td style="text-align:center;border: 1px solid black;">
              </td>
             </tr>
             <tr>
              <td style="width:50%;border-collapse: collapse;border: 1px solid black;white-space:nowrap;">
                 Hours Between Overhauls(TBO):<asp:TextBox ID="TextBox7" runat="server"></asp:TextBox></td>
                  <td style="text-align:center;border: 1px solid black;">
              </td>
             </tr>
             <tr>
              <td style="width:50%;border-collapse: collapse;border: 1px solid black;white-space:nowrap;">
                 Hours Since Last OVerhaul:<asp:TextBox ID="TextBox8" runat="server"></asp:TextBox></td>
                  <td style="text-align:center;border: 1px solid black;">
              </td>
             </tr>
             <tr>
              <td style="width:50%;border-collapse: collapse;border: 1px solid black;white-space:nowrap;">
                 Last Overhaul:<asp:RadioButtonList ID="rbllastOverHaul" runat="server" RepeatDirection="Horizontal" TextAlign="Right" style="display:inline;">
                 <asp:ListItem Text="Major" />
                 <asp:ListItem Text="Top" />
                 </asp:RadioButtonList></td>
                  <td style="text-align:center;border: 1px solid black;">
              </td>
             </tr>
             <tr>
              <td style="width:50%;border-collapse: collapse;border: 1px solid black;white-space:nowrap;">
                 Total Hours On Airframe As of Jan. 1:<asp:TextBox ID="TextBox10" runat="server"></asp:TextBox></td>
                  <td style="border: 1px solid black;">
                      NOTE: Please submit a copy of your log book to substantiate T.B.O. and<br />airframe hours.
              </td>
                 <td><asp:Button ID="ButtonAdd2" runat="server" Text="Add" OnClick="ButtonAdd2_Click" CssClass="grvAddButton" /></td>
             </tr>
         </table>
       </ItemTemplate>
    </asp:Repeater></td>
        </tr>
      </table>
CodeBehind
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            SetInitialRow();
            SetInitialRow2();
            //BindList();
        }
        SqlConnection conn = new SqlConnection(connStr);
        conn.Open();
        SqlCommand command = new SqlCommand("select sum(TaxPyrRetdVal) as GrandTotal from AircraftInfo", conn);
            // int result = command.ExecuteNonQuery();
        using (SqlDataReader reader = command.ExecuteReader())
        {
            if (reader.Read())
            {
             //   lblTotal.Text = Convert.ToInt32("GrandTotal");
            }
        }
        conn.Close();
    }
    private void SetInitialRow()
    {
        DataTable dt = new DataTable();
        DataRow dr = null;
        dt.Columns.Add(new DataColumn("RowNumber", typeof(string)));
        dt.Columns.Add(new DataColumn("boatregNum", typeof(string)));
        dt.Columns.Add(new DataColumn("taxpayerret", typeof(string)));
        dt.Columns.Add(new DataColumn("fortaxofficeonly", typeof(string)));
        dr = dt.NewRow();
        dr["RowNumber"] = 1;
        dr["boatregNum"] = string.Empty;
        dr["taxpayerret"] = string.Empty;
        dr["fortaxofficeonly"] = string.Empty;
        dt.Rows.Add(dr);
        //dr = dt.NewRow();
        //Store the DataTable in ViewState
        ViewState["CurrentTable"] = dt;
        Gridview1.DataSource = dt;
        Gridview1.DataBind();
    }
    private void SetInitialRow2()
    {
        DataTable dt = new DataTable();
        DataRow dr = null;
        //Create DataTable columns
        dt.Columns.Add(new DataColumn("RowNumber", typeof(string)));
        dt.Columns.Add(new DataColumn("TextBox2", typeof(string)));
        dt.Columns.Add(new DataColumn("TextBox3", typeof(string)));
        dt.Columns.Add(new DataColumn("TextBox4", typeof(string)));
        dt.Columns.Add(new DataColumn("TextBox5", typeof(string)));
        dt.Columns.Add(new DataColumn("TextBox6", typeof(string)));
        dt.Columns.Add(new DataColumn("txtdatePurchased", typeof(string)));
        dt.Columns.Add(new DataColumn("rblPurchaseType", typeof(string)));
        dt.Columns.Add(new DataColumn("TextBox9", typeof(string)));
        dt.Columns.Add(new DataColumn("TextBox7", typeof(string)));
        dt.Columns.Add(new DataColumn("TextBox8", typeof(string)));
        dt.Columns.Add(new DataColumn("rbllastOverHaul", typeof(string)));
        dt.Columns.Add(new DataColumn("TextBox10", typeof(string)));
        //Create Row for each columns
        dr = dt.NewRow();
        dr["RowNumber"] = 1;
        dr["TextBox2"] = string.Empty;
        dr["TextBox3"] = string.Empty;
        dr["TextBox4"] = string.Empty;
        dr["TextBox5"] = string.Empty;
        dr["TextBox6"] = string.Empty;
        dr["txtdatePurchased"] = string.Empty;
        dr["rblPurchaseType"] = string.Empty;
        dr["TextBox9"] = string.Empty;
        dr["TextBox7"] = string.Empty;
        dr["TextBox8"] = string.Empty;
        dr["rbllastOverHaul"] = string.Empty;
        dr["TextBox10"] = string.Empty;
        dt.Rows.Add(dr);
        //Store the DataTable in ViewState for future reference
        ViewState["CurrentTable"] = dt;
        //Bind the Repeater with the DataTable
        Repeater2.DataSource = dt;
        Repeater2.DataBind();
    }
    private void AddNewRow()
    {
        int rowIndex = 0;
        if (ViewState["CurrentTable"] != null)
        {
            DataTable dtCurrentTable = (DataTable)ViewState["CurrentTable"];
            DataRow drCurrentRow = null;
            if (dtCurrentTable.Rows.Count > 0)
            {
                for (int i = 1; i <= dtCurrentTable.Rows.Count; i++)
                {
                    //extract the TextBox values
                    TextBox tbboatregNum = (TextBox)Gridview1.Rows[rowIndex].Cells[1].FindControl("txtboatregNum");
                    TextBox tbtaxpayerret = (TextBox)Gridview1.Rows[rowIndex].Cells[2].FindControl("txttaxpayerret");
                    TextBox tbfortaxofficeonly = (TextBox)Gridview1.Rows[rowIndex].Cells[3].FindControl("txtfortaxofficeonly");
                    drCurrentRow = dtCurrentTable.NewRow();
                    drCurrentRow["RowNumber"] = i + 1;
                    dtCurrentTable.Rows[i - 1]["boatregNum"] = tbboatregNum.Text;
                    dtCurrentTable.Rows[i - 1]["taxpayerret"] = tbtaxpayerret.Text;
                    dtCurrentTable.Rows[i - 1]["fortaxofficeonly"] = tbfortaxofficeonly.Text;
                    rowIndex++;
                }
                dtCurrentTable.Rows.Add(drCurrentRow);
                ViewState["CurrentTable"] = dtCurrentTable;
                Gridview1.DataSource = dtCurrentTable;
                Gridview1.DataBind();
            }
          }
          else
         {
            Response.Write("ViewState is null");
        }
        //Set Previous Data on Postbacks
        SetPreviousData();
    }
    private void AddNewRow2()
    {
        int rowIndex = 0;
        if (ViewState["CurrentTable"] != null)
        {
            DataTable dtCurrentTable = (DataTable)ViewState["CurrentTable"];
            DataRow drCurrentRow = null;
            if (dtCurrentTable.Rows.Count > 0)
            {
                for (int i = 1; i <= dtCurrentTable.Rows.Count; i++)
                {
                    //extract the TextBox values
                    TextBox tbTextBox2 = (TextBox)Repeater2.Items[rowIndex].FindControl("TextBox2");
                    TextBox tbTextBox3 = (TextBox)Repeater2.Items[rowIndex].FindControl("TextBox3");
                    TextBox tbTextBox4 = (TextBox)Repeater2.Items[rowIndex].FindControl("TextBox4");
                    TextBox tbTextBox5 = (TextBox)Repeater2.Items[rowIndex].FindControl("TextBox5");
                    TextBox tbTextBox6 = (TextBox)Repeater2.Items[rowIndex].FindControl("TextBox6");
                    TextBox tbdatePurchased = (TextBox)Repeater2.Items[rowIndex].FindControl("txtdatePurchased");
                    RadioButtonList tbPurchaseType = (RadioButtonList)Repeater2.Items[rowIndex].FindControl("rblPurchaseType");
                    TextBox tbTextBox9 = (TextBox)Repeater2.Items[rowIndex].FindControl("TextBox9");
                    //Create new row in DataTable and set its values
                    drCurrentRow = dtCurrentTable.NewRow();
                    drCurrentRow["RowNumber"] = i + 1;
                    dtCurrentTable.Rows[i - 1]["TextBox2"] = tbTextBox2.Text;
                    dtCurrentTable.Rows[i - 1]["TextBox3"] = tbTextBox3.Text;
                    dtCurrentTable.Rows[i - 1]["TextBox4"] = tbTextBox4.Text;
                    dtCurrentTable.Rows[i - 1]["TextBox5"] = tbTextBox5.Text;
                    dtCurrentTable.Rows[i - 1]["TextBox6"] = tbTextBox6.Text;
                    dtCurrentTable.Rows[i - 1]["txtdatePurchased"] = tbdatePurchased.Text;
                    dtCurrentTable.Rows[i - 1]["rblPurchaseType"] = tbPurchaseType.Text;
                    dtCurrentTable.Rows[i - 1]["TextBox9"] = tbTextBox9.Text;
                    rowIndex++;
                }
                //add the new row to the current DataTable
                dtCurrentTable.Rows.Add(drCurrentRow);
                //store the current DataTable in ViewState
                ViewState["CurrentTable"] = dtCurrentTable;
                //rebind the Repeater with the updated DataTable
                Repeater2.DataSource = dtCurrentTable;
                Repeater2.DataBind();
            }
        }
        else
        {
            Response.Write("ViewState is null");
        }
        //Set Previous Data on Postbacks
        SetPreviousData2();
    }
    private void SetPreviousData()
    {
        int rowIndex = 0;
        if (ViewState["CurrentTable"] != null)
        {
            DataTable dt = (DataTable)ViewState["CurrentTable"];
            if (dt.Rows.Count > 0)
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    TextBox tbboatregNum = (TextBox)Gridview1.Rows[rowIndex].Cells[1].FindControl("txtboatregNum");
                    TextBox tbtaxpayerret = (TextBox)Gridview1.Rows[rowIndex].Cells[2].FindControl("txttaxpayerret");
                    TextBox tbfortaxofficeonly = (TextBox)Gridview1.Rows[rowIndex].Cells[3].FindControl("txtfortaxofficeonly");
                    tbboatregNum.Text = dt.Rows[i]["boatregNum"].ToString();
                    tbtaxpayerret.Text = dt.Rows[i]["taxpayerret"].ToString();
                    tbfortaxofficeonly.Text = dt.Rows[i]["fortaxofficeonly"].ToString();
                    rowIndex++;
                }
            }
        }
    }
    private void SetPreviousData2()
    {
        int rowIndex = 0;
        if (ViewState["CurrentTable"] != null)
        {
            DataTable dt = (DataTable)ViewState["CurrentTable"];
            if (dt.Rows.Count > 0)
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    TextBox tbTextBox2 = (TextBox)Repeater2.Items[rowIndex].FindControl("TextBox2");
                    TextBox tbTextBox3 = (TextBox)Repeater2.Items[rowIndex].FindControl("TextBox3");
                    tbTextBox2.Text = dt.Rows[i]["TextBox2"].ToString();
                    tbTextBox3.Text = dt.Rows[i]["TextBox3"].ToString();
                    rowIndex++;
                }
            }
        }
    }