title: Value is not being added in text box
body: <p>I have the following code that i found on this tutorial:</p>
  
  <p><a href="http://geekswithblogs.net/dotNETvinz/archive/2009/06/04/adding-dynamic-rows-in-gridview-with-textboxes.aspx" rel="nofollow">http://geekswithblogs.net/dotNETvinz/archive/2009/06/04/adding-dynamic-rows-in-gridview-with-textboxes.aspx</a></p>
  
  <p>Default.aspx</p>
  
  <pre><code>&lt;asp:gridview ID="Gridview1" runat="server" ShowFooter="true"
                               AutoGenerateColumns="false"&gt;
          &lt;Columns&gt;
          &lt;asp:BoundField DataField="RowNumber" HeaderText="Row Number" /&gt;
          &lt;asp:TemplateField HeaderText="Header 1"&gt;
              &lt;ItemTemplate&gt;
                  &lt;asp:TextBox ID="TextBox1" runat="server"&gt;&lt;/asp:TextBox&gt;
              &lt;/ItemTemplate&gt;
          &lt;/asp:TemplateField&gt;
          &lt;asp:TemplateField HeaderText="Header 2"&gt;
              &lt;ItemTemplate&gt;
                  &lt;asp:TextBox ID="TextBox2" runat="server"&gt;&lt;/asp:TextBox&gt;
              &lt;/ItemTemplate&gt;
          &lt;/asp:TemplateField&gt;
          &lt;asp:TemplateField HeaderText="Header 3"&gt;
              &lt;ItemTemplate&gt;
                   &lt;asp:TextBox ID="TextBox3" runat="server"&gt;&lt;/asp:TextBox&gt;
              &lt;/ItemTemplate&gt;
              &lt;FooterStyle HorizontalAlign="Right" /&gt;
              &lt;FooterTemplate&gt;
                   &lt;asp:Button ID="ButtonAdd" runat="server" Text="Add New Row" onclick="ButtonAdd_Click" /&gt;
              &lt;/FooterTemplate&gt;
          &lt;/asp:TemplateField&gt;
          &lt;/Columns&gt;
  &lt;/asp:gridview&gt;
  </code></pre>
  
  <p>Default.aspx.cs</p>
  
  <pre><code>protected void Page_Load(object sender, EventArgs e){
          if (!Page.IsPostBack){
              SetInitialRow();  
          }
  }
  
  
  private void SetInitialRow(){
  
          DataTable dt = new DataTable();
          DataRow dr = null;
          dt.Columns.Add(new DataColumn("RowNumber", typeof(string)));
          dt.Columns.Add(new DataColumn("Column1", typeof(string)));
          dt.Columns.Add(new DataColumn("Column2", typeof(string)));
          dt.Columns.Add(new DataColumn("Column3", typeof(string)));
  
          dr = dt.NewRow();
          dr["RowNumber"] = 1;
          dr["Column1"] = string.Empty;
          dr["Column2"] = string.Empty;
          dr["Column3"] = string.Empty;
          dt.Rows.Add(dr);
  
          //Store the DataTable in ViewState
          ViewState["CurrentTable"] = dt;
  
          Gridview1.DataSource = dt;
          Gridview1.DataBind();
  }
  
  private void AddNewRowToGrid(){
  
          int rowIndex =0;
          if (ViewState["CurrentTable"] != null)
          {
              DataTable dtCurrentTable = (DataTable)ViewState["CurrentTable"];
              DataRow drCurrentRow = null;
              if (dtCurrentTable.Rows.Count &gt; 0)
              {
                  for (int i = 1; i &lt;= dtCurrentTable.Rows.Count; i++)
                  {
                      //extract the TextBox values
                      TextBox box1 = (TextBox)Gridview1.Rows[rowIndex].Cells[1].FindControl("TextBox1");
                      TextBox box2 = (TextBox)Gridview1.Rows[rowIndex].Cells[2].FindControl("TextBox2");
                      TextBox box3 = (TextBox)Gridview1.Rows[rowIndex].Cells[3].FindControl("TextBox3");
  
                      drCurrentRow = dtCurrentTable.NewRow();
                      drCurrentRow["RowNumber"] = i + 1; 
                      drCurrentRow["Column1"] = box1.Text;
                      drCurrentRow["Column2"] = box2.Text;
                      drCurrentRow["Column3"] = box3.Text;
  
                      rowIndex++;
                  }
  
                  //add new row to DataTable
                  dtCurrentTable.Rows.Add(drCurrentRow);
                  //Store the current data to ViewState
                  ViewState["CurrentTable"] = dtCurrentTable;
  
                  //Rebind the Grid with the current data
                  Gridview1.DataSource = dtCurrentTable;
                  Gridview1.DataBind();
             }
          }
          else
          {
              Response.Write("ViewState is null");
          }
  
          //Set Previous Data on Postbacks
          SetPreviousData();
  }
  
  private void SetPreviousData(){
  
          int rowIndex = 0;
          if (ViewState["CurrentTable"] != null)
          {
              DataTable dt = (DataTable)ViewState["CurrentTable"];
              if (dt.Rows.Count &gt; 0)
              {
                  for (int i = 1; i &lt; dt.Rows.Count; i++)
                  {
                      TextBox box1 = (TextBox)Gridview1.Rows[rowIndex].Cells[1].FindControl("TextBox1");
                      TextBox box2 = (TextBox)Gridview1.Rows[rowIndex].Cells[2].FindControl("TextBox2");
                      TextBox box3 = (TextBox)Gridview1.Rows[rowIndex].Cells[3].FindControl("TextBox3");
  
  
                      box1.Text = dt.Rows[i]["Column1"].ToString();
                      box2.Text = dt.Rows[i]["Column2"].ToString();
                      box3.Text = dt.Rows[i]["Column3"].ToString();
  
                      rowIndex++;
  
                  }
              }
          }
  }
  
  protected void ButtonAdd_Click(object sender, EventArgs e){
          AddNewRowToGrid();
  }
  </code></pre>
  
  <p>Now the issue is, lets say when the inital grid comes up and i add some data and then click add row. The data i added in that row stays there ok. But now, lets say i added 5 rows, and then i go to row number 3 and i add some data and click add row, that data disappears and never shows up. The data will only show up if i add data on the last row and then click add row. Does anyone know why this is happening?</p>