Delete selected row from gridview and database
I have a Table name Customer.I am showing partial fields from table in a gridview and Now i want to delete the selected row from gridview and database.So please help me friends
Know the answer? Post it — somebody with the same question will find it here.
Sign in to answer this question
It is the same account you read, post and publish with — and you will come straight back to this page.
Satyapriya NayakPosted Mar 18, 2013, 6:19 AM
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
using System.Collections.Specialized;
using System.Collections.Generic;
using System.Text;
public partial class _Default : System.Web.UI.Page
{
string connStr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
SqlCommand cmd = new SqlCommand();
SqlConnection con;
string str;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
BindGridView();
totalrecords();
}
private void totalrecords()
{
con = new SqlConnection(connStr);
//cmd.Connection = con;
con.Open();
str = "select count(*) from employee ";
SqlCommand cmd = new SqlCommand(str, con);
int row = (int)cmd.ExecuteScalar();
Label2.Text = row.ToString();
con.Close();
}
private void BindGridView()
{
con = new SqlConnection(connStr);
cmd.Connection = con;
cmd.CommandText = "Select * from employee";
con.Open();
GridView1.DataSource = cmd.ExecuteReader();
GridView1.DataBind();
con.Close();
}
private void DeleteRecords(StringCollection sc)
{
con = new SqlConnection(connStr);
StringBuilder sb = new StringBuilder(string.Empty);
foreach (string item in sc)
{
const string sqlStatement = "DELETE FROM employee WHERE EmpId";
sb.AppendFormat("{0}='{1}'; ", sqlStatement, item);
}
try
{
con.Open();
SqlCommand cmd = new SqlCommand(sb.ToString(), con);
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
}
catch (System.Data.SqlClient.SqlException ex)
{
string msg = "Deletion Error:";
msg += ex.Message;
throw new Exception(msg);
}
finally
{
con.Close();
}
}
protected void ButtonDelete_Click(object sender, EventArgs e)
{
StringCollection sc = new StringCollection();
string id = string.Empty;
for (int i = 0; i < GridView1.Rows.Count; i++)
{
CheckBox cb = (CheckBox)GridView1.Rows[i].Cells[0].FindControl("CheckBox1");
if (cb != null)
{
if (cb.Checked)
{
id = GridView1.Rows[i].Cells[1].Text;
sc.Add(id);
}
}
}
DeleteRecords(sc);
BindGridView();
totalrecords();
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
{
Button b = (Button)e.Row.FindControl("ButtonDelete");
b.Attributes.Add("onclick", "return ConfirmOnDelete();");
}
}
}
Vishal GilbilePosted Mar 18, 2013, 3:25 AM
You could make use of RowDeleting Event of GridView control.
There are two ways for this.
1st Way.Setting the DataKeyNames property of the GridView to a primary key column of your DB Table.
and finally accessing the DataKeyName property of the Gridview in your Row Deleting event.
2nd Way. IF your Gridview is making use of Template Field then Try to access the Control under your ItemTemplate in your RowDeleting event of your gridview.
For instance if my ItemTemplate contains a Label Control for my ID Column, I would access it in the following manner in my RowDeleting Event of gridview.
Label lblId=(Label)gridview.Rows[e.RowIndex].Cells[0].FindControl("LabelID");
And finally write your sql delete query script down.
Hope that solves your problem.
With Regards,
Vishal Gilbile.