HiSadia.net,
I have created a small example. Now please take its reference and correct your code.
HTML
<div>
<asp:TextBox runat="server" ID="txtName" />
<br />
<br />
<asp:GridView ID="GridView1" runat="server" ShowFooter="true" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField HeaderText="Company Name">
<ItemTemplate>
<asp:Label ID="lblCompanyName" Text='<%# Eval("CompanyName") %>' runat="server" />
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtCompanyName" runat="server"></asp:TextBox>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Designation">
<ItemTemplate>
<asp:Label ID="lblDesignation" Text='<%# Eval("Designation") %>' runat="server" />
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtDesignation" runat="server"></asp:TextBox>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Experience">
<ItemTemplate>
<asp:Label ID="lblExperience" Text='<%# Eval("Experience") %>' runat="server" />
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtExperience" runat="server"></asp:TextBox>
<asp:Button ID="btnAdd" runat="server" Text="Add" OnClick="Add" />
</FooterTemplate>
</asp:TemplateField>
</Columns>
<EmptyDataTemplate>
<tr>
<th>
Company Name
</th>
<th>
Designation
</th>
<th>
Experience
</th>
</tr>
<tr>
<td>
<asp:TextBox ID="txtCompanyName" runat="server" />
</td>
<td>
<asp:TextBox ID="txtDesignation" runat="server" />
</td>
<td>
<asp:TextBox ID="txtExperience" runat="server" />
<asp:Button ID="btnAdd" runat="server" Text="Add" OnClick="Add" />
</td>
</tr>
</EmptyDataTemplate>
</asp:GridView>
<br />
<asp:Button ID="btnSave" runat="server" Text="Save" OnClick="Save" />
</div>
Namespaces
C#
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
VB.Net
Imports System.Configuration
Imports System.Data
Imports System.Data.SqlClient
Code
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindData();
}
}
private void BindData()
{
DataTable dt;
if (ViewState["Experience"] == null)
{
dt = new DataTable();
dt.Columns.AddRange(new DataColumn[3] {
new DataColumn("CompanyName"),
new DataColumn("Designation"),
new DataColumn("Experience") });
ViewState["Experience"] = dt;
GridView1.DataSource = dt;
GridView1.DataBind();
}
else
{
dt = (DataTable)ViewState["Experience"];
GridView1.DataSource = dt;
GridView1.DataBind();
}
}
protected void Add(object sender, EventArgs e)
{
Control control = null;
if (GridView1.FooterRow != null)
{
control = GridView1.FooterRow;
}
else
{
control = GridView1.Controls[0].Controls[0];
}
string companyName = (control.FindControl("txtCompanyName") as TextBox).Text;
string designation = (control.FindControl("txtDesignation") as TextBox).Text;
string experience = (control.FindControl("txtExperience") as TextBox).Text;
DataTable dtData = (DataTable)ViewState["Experience"];
dtData.Rows.Add(companyName, designation, experience);
ViewState["Experience"] = dtData;
BindData();
}
protected void Save(object sender, EventArgs e)
{
foreach (GridViewRow row in GridView1.Rows)
{
string companyName = (row.FindControl("lblCompanyName") as Label).Text;
string designation = (row.FindControl("lblDesignation") as Label).Text;
string experience = (row.FindControl("lblExperience") as Label).Text;
Insert(txtName.Text.Trim(), companyName, designation, experience);
}
Response.Redirect(Request.Url.AbsoluteUri);
}
private void Insert(string name, string companyName, string designation, string experience)
{
// Code to insert record in database.
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["constr"].ConnectionString))
{
SqlCommand cmd = new SqlCommand("INSERT INTO EmpCompany VALUES (@Name,@CompanyName,@Designation,@Experience)");
cmd.Parameters.AddWithValue("@Name", name);
cmd.Parameters.AddWithValue("@CompanyName", companyName);
cmd.Parameters.AddWithValue("@Designation", experience);
cmd.Parameters.AddWithValue("@Experience", designation);
cmd.Connection = con;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
}
VB.Net
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
If Not IsPostBack Then
BindData()
End If
End Sub
Private Sub BindData()
Dim dt As DataTable
If ViewState("Experience") Is Nothing Then
dt = New DataTable()
dt.Columns.AddRange(New DataColumn(2) {New DataColumn("CompanyName"), New DataColumn("Designation"), New DataColumn("Experience")})
ViewState("Experience") = dt
GridView1.DataSource = dt
GridView1.DataBind()
Else
dt = CType(ViewState("Experience"), DataTable)
GridView1.DataSource = dt
GridView1.DataBind()
End If
End Sub
Protected Sub Add(ByVal sender As Object, ByVal e As EventArgs)
Dim control As Control = Nothing
If GridView1.FooterRow IsNot Nothing Then
control = GridView1.FooterRow
Else
control = GridView1.Controls(0).Controls(0)
End If
Dim companyName As String = (TryCast(control.FindControl("txtCompanyName"), TextBox)).Text
Dim designation As String = (TryCast(control.FindControl("txtDesignation"), TextBox)).Text
Dim experience As String = (TryCast(control.FindControl("txtExperience"), TextBox)).Text
Dim dtData As DataTable = CType(ViewState("Experience"), DataTable)
dtData.Rows.Add(companyName, designation, experience)
ViewState("Experience") = dtData
BindData()
End Sub
Protected Sub Save(ByVal sender As Object, ByVal e As EventArgs)
For Each row As GridViewRow In GridView1.Rows
Dim companyName As String = (TryCast(row.FindControl("lblCompanyName"), Label)).Text
Dim designation As String = (TryCast(row.FindControl("lblDesignation"), Label)).Text
Dim experience As String = (TryCast(row.FindControl("lblExperience"), Label)).Text
Insert(txtName.Text.Trim(), companyName, designation, experience)
Next
Response.Redirect(Request.Url.AbsoluteUri)
End Sub
Private Sub Insert(ByVal name As String, ByVal companyName As String, ByVal designation As String, ByVal experience As String)
' Code to insert record in database.
Using con As SqlConnection = New SqlConnection(ConfigurationManager.ConnectionStrings("constr").ConnectionString)
Dim cmd As SqlCommand = New SqlCommand("INSERT INTO EmpCompany VALUES (@Name,@CompanyName,@Designation,@Experience)")
cmd.Parameters.AddWithValue("@Name", name)
cmd.Parameters.AddWithValue("@CompanyName", companyName)
cmd.Parameters.AddWithValue("@Designation", experience)
cmd.Parameters.AddWithValue("@Experience", designation)
cmd.Connection = con
con.Open()
cmd.ExecuteNonQuery()
con.Close()
End Using
End Sub
Screenshot

Note: If you want to insert data in different table change the insert code as per your need.