<asp:GridView ID="grdParticular" runat="server" ShowHeaderWhenEmpty="true" EmptyDataText="No data in gridview" Visible="true" CssClass="table table-striped table-bordered" ShowFooter="True" ShowHeader="true" AutoGenerateColumns="False" DataKeyNames="particula_id">
<columns>
<asp:TemplateField HeaderText="ID" Visible="false">
<itemtemplate>
<asp:HiddenField runat="server" ID="ParID" Value='<%# Eval("particula_id")%>' />
<asp:TemplateField HeaderText="Particular">
<itemtemplate>
<asp:TextBox ID="txtPArticular" Text='<%# Eval ("par")%>' runat="server">
<asp:TemplateField HeaderText="Result">
<itemtemplate>
<asp:TextBox ID="txtResult" Text='<%# Eval ("result")%>' runat="server">
<asp:TemplateField HeaderText="Unit">
<itemtemplate>
<asp:TextBox ID="txtUnit" runat="server" Text='<%# Eval ("unit")%>'>
<asp:TemplateField HeaderText="Value">
<itemtemplate>
<asp:TextBox ID="txtValue" runat="server" Text='<%# Eval ("value")%>'>
<asp:templatefield>
<itemtemplate>
<asp:Button ID="ButtonAddNewRow" runat="server" Text="Add Row" OnClick="ButtonAddNewRow_Click" />
What I have tried:
protected void ButtonAddNewRow_Click(object sender, EventArgs e)
{
int rowIndex = 0;
if (ViewState["datatable"] != null)
{
DataTable dtCurrentTable = (DataTable)ViewState["datatable"];
DataRow drCurrentRow = null;
if (dtCurrentTable.Rows.Count > 0)
{
for (int i = 1; i <= dtCurrentTable.Rows.Count; i++)
{
//extract the TextBox values
TextBox box1 = (TextBox)grdParticular.Rows[rowIndex].Cells[1].FindControl("txtPArticular");
TextBox box2 = (TextBox)grdParticular.Rows[rowIndex].Cells[2].FindControl("txtResult");
TextBox box3 = (TextBox)grdParticular.Rows[rowIndex].Cells[3].FindControl("txtUnit");
TextBox box4 = (TextBox)grdParticular.Rows[rowIndex].Cells[4].FindControl("txtValue");
drCurrentRow = dtCurrentTable.NewRow();
//drCurrentRow["RowNumber"] = i + 1;
dtCurrentTable.Rows[i - 1]["par"] = box1.Text;
dtCurrentTable.Rows[i - 1]["Result"] = box2.Text;
dtCurrentTable.Rows[i - 1]["Unit"] = box3.Text;
dtCurrentTable.Rows[i - 1]["Value"] = box4.Text;
rowIndex++;
}
dtCurrentTable.Rows.Add(drCurrentRow);
ViewState["datatable"] = dtCurrentTable;
grdParticular.DataSource = dtCurrentTable;
grdParticular.DataBind();
}
}
else
{
Response.Write("ViewState is null");
}
}