Hi akhter,
Check the exmple.
HTML
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" DataKeyNames="CustomerId" OnRowDeleting="GridView1_RowDeleting">
<Columns>
<asp:BoundField DataField="CustomerId" HeaderText="Id" />
<asp:BoundField DataField="Name" HeaderText="Name" />
<asp:BoundField DataField="Country" HeaderText="Country" />
<asp:CommandField ButtonType="Button" ShowDeleteButton="True" />
</Columns>
</asp:GridView>
<hr />
ID:<asp:TextBox runat="server" ID="txtID" />
<br />
Name:<asp:TextBox runat="server" ID="txtName" />
<br />
Country:<asp:TextBox runat="server" ID="txtCountry" />
<br />
<asp:Button ID="btnAdd" runat="server" Text="Add" OnClick="OnAdd" />
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)
{
PopulateData();
BindGridView();
}
}
protected void OnAdd(object sender, EventArgs e)
{
DataTable dtgridview = ViewState["Data"] as DataTable;
DataRow dr2 = dtgridview.NewRow();
dr2["CustomerId"] = txtID.Text;
dr2["Name"] = txtName.Text;
dr2["Country"] = txtCountry.Text;
dtgridview.Rows.Add(dr2);
ViewState["Data"] = dtgridview;
BindGridView();
}
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
DataTable dt = (DataTable)ViewState["Data"];
int index = Convert.ToInt32(e.RowIndex);
// Delete from ViewState.
dt.Rows[index].Delete();
ViewState["Data"] = dt;
if (GridView1.DataKeys[e.RowIndex].Value != DBNull.Value)
{
int id = Convert.ToInt32(GridView1.DataKeys[index].Value);
// Delete from Database.
string constr = ConfigurationManager.ConnectionStrings["conString"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
string query = "DELETE FROM Customers WHERE CustomerId = @Id";
using (SqlCommand cmd = new SqlCommand(query))
{
cmd.Connection = con;
cmd.Parameters.AddWithValue("@Id", id);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
}
}
BindGridView();
}
private void BindGridView()
{
GridView1.DataSource = ViewState["Data"] as DataTable;
GridView1.DataBind();
}
private void PopulateData()
{
string constr = ConfigurationManager.ConnectionStrings["conString"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
string query = "SELECT * FROM Customers";
using (SqlCommand cmd = new SqlCommand(query))
{
cmd.Connection = con;
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
sda.Fill(dt);
ViewState["Data"] = dt;
}
}
}
VB.Net
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
If Not IsPostBack Then
PopulateData()
BindGridView()
End If
End Sub
Protected Sub OnAdd(ByVal sender As Object, ByVal e As EventArgs)
Dim dtgridview As DataTable = TryCast(ViewState("Data"), DataTable)
Dim dr2 As DataRow = dtgridview.NewRow()
dr2("CustomerId") = txtID.Text
dr2("Name") = txtName.Text
dr2("Country") = txtCountry.Text
dtgridview.Rows.Add(dr2)
ViewState("Data") = dtgridview
BindGridView()
End Sub
Protected Sub GridView1_RowDeleting(ByVal sender As Object, ByVal e As GridViewDeleteEventArgs)
Dim dt As DataTable = CType(ViewState("Data"), DataTable)
Dim index As Integer = Convert.ToInt32(e.RowIndex)
' Delete from ViewState.
dt.Rows(index).Delete()
ViewState("Data") = dt
If Not IsDBNull(GridView1.DataKeys(e.RowIndex).Value) Then
Dim id As Integer = Convert.ToInt32(GridView1.DataKeys(e.RowIndex).Value)
' Delete from Database.
Dim constr As String = ConfigurationManager.ConnectionStrings("conString").ConnectionString
Using con As SqlConnection = New SqlConnection(constr)
Dim query As String = "DELETE FROM Customers WHERE CustomerId = @Id"
Using cmd As SqlCommand = New SqlCommand(query)
cmd.Connection = con
cmd.Parameters.AddWithValue("@Id", id)
con.Open()
cmd.ExecuteNonQuery()
con.Close()
End Using
End Using
End If
BindGridView()
End Sub
Private Sub BindGridView()
GridView1.DataSource = TryCast(ViewState("Data"), DataTable)
GridView1.DataBind()
End Sub
Private Sub PopulateData()
Dim constr As String = ConfigurationManager.ConnectionStrings("conString").ConnectionString
Using con As SqlConnection = New SqlConnection(constr)
Dim query As String = "SELECT * FROM Customers"
Using cmd As SqlCommand = New SqlCommand(query)
cmd.Connection = con
Dim sda As SqlDataAdapter = New SqlDataAdapter(cmd)
Dim dt As DataTable = New DataTable()
sda.Fill(dt)
ViewState("Data") = dt
End Using
End Using
End Sub
Screenshot
![](https://i.imgur.com/He59itJ.gif)