Here in this article I will show you that how to perform certain operation such as Inert and Delete in datagridview. For completing this article I had used VisualStudio 2008 and SQL Server 2008 on windows7 64 bit platform.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace WindowsFormsApplication3
{
publicpartialclassForm1 : Form
{
public Form1()
{
InitializeComponent();
}
///<summary>
/// Create 3 variables which have a name da of type SqlDataAdapter class
/// which used to execute SelectCommand, ds of type DataSet class which
/// store all the tables of select command and _rowIndex of type int which
/// store rowindex of datagrid view when rows or cells of gridview is
/// clicked.
///</summary>
SqlDataAdapter da;
DataSet ds;
int _rowIndex;
///<summary>
/// At the load event of form establish connection with sqlserver and fetch
/// records in dataset and then bind records of that dataset to datagridview
/// as below I had done. Then close the connection.
///</summary>
privatevoid Form1_Load(object sender, EventArgs e)
{
SqlConnection con = newSqlConnection(); //Creating object of SqlConnection class.
con.ConnectionString = "Data Source=aaa;User Id=bbb; Password =ccc;Initial Catalog=Workbook"; //Passing connection string to sqlconnection class object.
con.Open(); //Opening connection.
da = new SqlDataAdapter("select * from Student", con); //Passing select query to SqlDataAdapter object.
ds = new DataSet(); //Creating a dataset object.
da.Fill(ds); //Filling record in dataset by calling Fill() method of SqlDataAdapter class.
dataGridView1.DataSource = ds.Tables[0]; //Binding records of a dataset in datagrid view.
con.Close(); //Closing connection with sqlserver.
}
///<summary>
/// At the click event of cell retrive row index of the clickable
/// cell and store it in _rowIndex variable. Then finnaly display
/// value of that row in the textbox as I doing it in below code.
///</summary>
privatevoid dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
_rowIndex = e.RowIndex; //Retriving row index on which cell is clicked.
if (_rowIndex == -1) //if _rowIndex is -1 then break the execution.
return;
DataGridViewRow rowData = dataGridView1.Rows[_rowIndex]; //Creating DataGridViewRow object of particlular index.
//Displaying values of rowData object in textbox.
textBox1.Text = rowData.Cells[0].Value.ToString();
textBox2.Text = rowData.Cells[1].Value.ToString();
textBox3.Text = rowData.Cells[2].Value.ToString();
textBox4.Text = rowData.Cells[3].Value.ToString();
}
///<summary>
/// In this method I had written code to clear data of
/// textbox control and making textbox control editable
/// by setting ReadOnly property of textbox control to
/// true and enabling Update In DataGridView button.
///</summary>
privatevoid insert_Click(object sender, EventArgs e)
{
TextBox[] tempTextBox = { textBox1, textBox2, textBox3, textBox4 };
foreach (TextBox temp in tempTextBox)
{
temp.Clear();
temp.ReadOnly = false;
}
button3.Enabled = true;
}
///<summary>
/// In this event I had written code to delete record from datagridview.
/// For performing this task I need _rowIndex of specified record which
/// I get when we click on cell of datagrid view. Then by calling
/// RemoveAt(_rowIndex) method of DataGridView.Rows we can delete that
/// rows.
///</summary>
privatevoid delete_Click(object sender, EventArgs e)
{
//By this condition I can check whether datagridview have
//records or not.
if (dataGridView1.Rows.Count <= 0)
{
MessageBox.Show("There is no records in grid view.");
return;
}
//Here we check that textbox have values or not.
if (string.IsNullOrEmpty(textBox1.Text) || string.IsNullOrEmpty(textBox2.Text) || string.IsNullOrEmpty(textBox3.Text) || string.IsNullOrEmpty(textBox4.Text))
{
MessageBox.Show("Please click on datagrid view rows to delete.");
return;
}
//If rowindex is less than 0 then break method execution.
if (_rowIndex < 0)
return;
//Here I show a confirmation message for record deleting.
if (!(MessageBox.Show("Record deleted warning.", "Are you sure want to delete the record!", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes))
return;
//By execution of this method record is being deleted.
dataGridView1.Rows.RemoveAt(_rowIndex);
dataGridView1.Refresh();
TextBox[] tempTextBox = { textBox1, textBox2, textBox3, textBox4 };
foreach (TextBox temp in tempTextBox)
temp.Clear();
}
///<summary>
/// At this event I insert new record in datagridview.
///</summary>
privatevoid update_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(textBox1.Text) || string.IsNullOrEmpty(textBox2.Text) || string.IsNullOrEmpty(textBox3.Text) || string.IsNullOrEmpty(textBox4.Text))
{
MessageBox.Show("Please fill all the fields.");
return;
}
if (ds != null && ds.Tables.Count > 0)
{
DataRow _newRow = ds.Tables[0].NewRow(); //Create an object of DataRow by calling NewRow() method of DataTable class.
//Insert values in DataRow.
_newRow[0] = textBox1.Text;
_newRow[1] = textBox2.Text;
_newRow[2] = textBox3.Text;
_newRow[3] = textBox4.Text;
//Add newly created rows in table.
ds.Tables[0].Rows.Add(_newRow);
dataGridView1.Refresh();
}
//Clear all the fields of textbox control.
TextBox[] tempTextBox = { textBox1, textBox2, textBox3, textBox4 };
foreach (TextBox temp in tempTextBox)
{
temp.Clear();
temp.ReadOnly = true;
}
button3.Enabled = false;
}
}
}
When form is loaded it display values from database
When we click on cell of datagridview then content of that cell comes in textbox.
When I click on Delete Record button then confirmation message will display.
When I click on yes button then record is deleted.
Similarly you can perform rest of operation in this article.
James Smith
21-Sep-2011Hey Awadhendra,
Good one,