Hi Waghmare,
Here i have created sample that full fill your requirement. Yoou need to implement same for edit and update the record.
HTML
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" ShowFooter="true">
<Columns>
<asp:TemplateField HeaderText="Id">
<ItemTemplate>
<asp:Label ID="lblId" runat="server" Text='<%# Eval("Id") %>' />
</ItemTemplate>
<FooterTemplate>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Name">
<ItemTemplate>
<asp:Label ID="lblName" runat="server" Text='<%# Eval("Name") %>' />
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtName" runat="server" Text="Test Name" />
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Country">
<ItemTemplate>
<asp:Label ID="lblCountry" runat="server" Text='<%# Eval("Country") %>' />
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtCountry" runat="server" Text="Test Country" />
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Action">
<ItemTemplate>
<asp:Button Text="Delete" runat="server" OnClick="Delete" CommandArgument='<%# Eval("Id") %>'
Width="75px" />
</ItemTemplate>
<FooterTemplate>
<asp:Button ID="btnAdd" runat="server" Text="Add" OnClick="Add" Width="75px" CommandName="Footer" />
</FooterTemplate>
</asp:TemplateField>
</Columns>
<EmptyDataTemplate>
<table>
<tr>
<th scope="col">
Id
</th>
<th scope="col">
Name
</th>
<th scope="col">
Country
</th>
<th scope="col">
Action
</th>
</tr>
<tr>
<td>
</td>
<td>
<asp:TextBox ID="txtName" runat="server" Text="Test Country" />
</td>
<td>
<asp:TextBox ID="txtCountry" runat="server" Text="Test Country" />
</td>
<td>
<asp:Button ID="btnAdd" runat="server" Text="Add" OnClick="Add" Width="75px" CommandName="EmptyDataTemplate" />
</td>
</tr>
</table>
</EmptyDataTemplate>
</asp:GridView>
Code
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[3] { new DataColumn("Id"), new DataColumn("Name"), new DataColumn("Country") });
dt.Rows.Add(1, "John Hammond", "USA");
dt.Rows.Add(2, "Mudassar Khan", "India");
dt.Rows.Add(3, "Suzanne Mathews", "France");
dt.Rows.Add(4, "Robert Schidner", "UK");
GridView1.DataSource = dt;
GridView1.DataBind();
ViewState["Data"] = dt;
}
}
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 name = (control.FindControl("txtName") as TextBox).Text.Trim();
string country = (control.FindControl("txtCountry") as TextBox).Text.Trim();
DataTable dt = ViewState["Data"] as DataTable;
int lastId;
if (dt.Rows.Count == 0)
{
lastId = 1;
dt.Rows.Add(lastId, name, country);
}
else
{
lastId = Convert.ToInt32(dt.Rows[dt.Rows.Count - 1]["Id"].ToString());
dt.Rows.Add(lastId + 1, name, country);
}
GridView1.DataSource = dt;
GridView1.DataBind();
ViewState["Data"] = dt;
}
protected void Delete(object sender, EventArgs e)
{
string id = ((sender as Button)).CommandArgument;
DataTable dt = ViewState["Data"] as DataTable;
DataRow dr = dt.Select("Id=" + id)[0];
dt.Rows.Remove(dr);
GridView1.DataSource = dt;
GridView1.DataBind();
ViewState["Data"] = dt;
}
VB.Net
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not Me.IsPostBack Then
Dim dt As New DataTable()
dt.Columns.AddRange(New DataColumn(2) {New DataColumn("Id"), New DataColumn("Name"), New DataColumn("Country")})
dt.Rows.Add(1, "John Hammond", "USA")
dt.Rows.Add(2, "Mudassar Khan", "India")
dt.Rows.Add(3, "Suzanne Mathews", "France")
dt.Rows.Add(4, "Robert Schidner", "UK")
GridView1.DataSource = dt
GridView1.DataBind()
ViewState("Data") = dt
End If
End Sub
Protected Sub Add(sender As Object, 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 name As String = TryCast(control.FindControl("txtName"), TextBox).Text.Trim()
Dim country As String = TryCast(control.FindControl("txtCountry"), TextBox).Text.Trim()
Dim dt As DataTable = TryCast(ViewState("Data"), DataTable)
Dim lastId As Integer
If dt.Rows.Count = 0 Then
lastId = 1
dt.Rows.Add(lastId, name, country)
Else
lastId = Convert.ToInt32(dt.Rows(dt.Rows.Count - 1)("Id").ToString())
dt.Rows.Add(lastId + 1, name, country)
End If
GridView1.DataSource = dt
GridView1.DataBind()
ViewState("Data") = dt
End Sub
Protected Sub Delete(sender As Object, e As EventArgs)
Dim id As String = TryCast(sender, Button).CommandArgument
Dim dt As DataTable = TryCast(ViewState("Data"), DataTable)
Dim dr As DataRow = dt.[Select](Convert.ToString("Id=") & id)(0)
dt.Rows.Remove(dr)
GridView1.DataSource = dt
GridView1.DataBind()
ViewState("Data") = dt
End Sub
Screenshot
