Lập trình ứng dụng thêm – xóa – sửa trực tiếp trên DataGridview (Crub database on DataGridview use Cshap)

Hôm nay, mình xin hướng dẫn những bạn lập trình ứng dụng thêm, xóa, sửa trực tiếp trên datagridview sử dụng Cshap. Ở bài viết này, mình sử dụng SqlCommandBuilder để tạo lệnh ( thêm, xóa, sửa ) gán vào SqlDataAdapter .
Chương trình có giao diện như video bên dưới :

– Ở trong ví dụ này, mình sử dụng database với test và bảng table là tbl_students. Các bạn có thể copy code Sql bên dưới để insert vào database để viết ứng dụng.

USE [test]
GO

/****** Object:  Table [dbo].[tbl_students]    Script Date: 11/29/2015 15:45:49 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[tbl_students](
	[id] [nchar](10) NOT NULL,
	[name] [nvarchar](50) NULL,
	[address] [nvarchar](150) NULL,
	[phone] [nchar](10) NULL,
	[email] [nvarchar](50) NULL,
 CONSTRAINT [PK_tbl_students] PRIMARY KEY CLUSTERED 
(
	[id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

– Đầu tiên, tất cả chúng ta cần import thư viện sql client vào

using System.Data.SqlClient;

– Khai báo cáo biến liên kết với Microsoft Sql Server, biến này khai báo Global nha những bạn :

SqlConnection sqlCon = new SqlConnection("Server=(local); Database=test; Integrated Security=TRUE");

SqlCommandBuilder sqlCommand = null;

SqlDataAdapter sqlAdapter = null;

DataSet dataset = null;

– Tiếp đến, tất cả chúng ta viết thêm một void để load database từ cơ sở dữ liệu vào datagridview, ở đây tất cả chúng ta select thêm biến delete tạo một link hiển thị vào datagridview. Ở đây, những bạn chú ý quan tâm, vị trí tạo thêm trường delete mình có bôi đậm ở dưới trong đoạn code .

private void LoadData()
 {
    try
    {
        sqlAdapter = new SqlDataAdapter("SELECT *, 'Delete' AS [Delete] FROM tbl_students", sqlCon);
        sqlCommand = new SqlCommandBuilder(sqlAdapter);
        sqlAdapter.InsertCommand = sqlCommand.GetInsertCommand();
        sqlAdapter.UpdateCommand = sqlCommand.GetUpdateCommand();
        sqlAdapter.DeleteCommand = sqlCommand.GetDeleteCommand();
        dataset = new DataSet();
        sqlAdapter.Fill(dataset, "tbl_students");
        dataGridView1.DataSource = null;
        dataGridView1.DataSource = dataset.Tables["tbl_students"];
        for (int i = 0; i < dataGridView1.Rows.Count; i++)
        {
            DataGridViewLinkCell linkCell = new DataGridViewLinkCell();
            dataGridView1[5, i] = linkCell;
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

- Tiếp đến, tất cả chúng ta sẽ viết sự kiện formload để load database vào datagridview .

private void Form1_Load(object sender, EventArgs e)
 {
            try
            {
                sqlCon.Open();
                LoadData();
            }
             catch (Exception ex) { MessageBox.Show(ex.Message); }
 }

- Tiếp đến, chúng ta viết sự kiện CellContentClick cho datagridview. khi nhấn vào nút insert, update hay delete

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
 {
   try
    {
        if (e.ColumnIndex == 5)
        {
            string Task = dataGridView1.Rows[e.RowIndex].Cells[5].Value.ToString();
            if ( Task == "Delete")
            {
                if (MessageBox.Show("Bạn có chắc chắm muốn xóa không?", "Đang xóa...", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    int rowIndex = e.RowIndex;
                    dataGridView1.Rows.RemoveAt(rowIndex);
                    dataset.Tables["tbl_students"].Rows[rowIndex].Delete();
                    sqlAdapter.Update(dataset, "tbl_students");
                }
            }
            else if(Task == "Insert")
            {
                int row = dataGridView1.Rows.Count - 2;
                DataRow dr = dataset.Tables["tbl_students"].NewRow();
                dr["id"] = dataGridView1.Rows[row].Cells["id"].Value;
                dr["name"] = dataGridView1.Rows[row].Cells["name"].Value;
                dr["address"] = dataGridView1.Rows[row].Cells["address"].Value;
                dr["phone"] = dataGridView1.Rows[row].Cells["phone"].Value;
                dr["email"] = dataGridView1.Rows[row].Cells["email"].Value;
                dataset.Tables["tbl_students"].Rows.Add(dr);
                dataset.Tables["tbl_students"].Rows.RemoveAt(dataset.Tables["tbl_students"].Rows.Count - 1);
                dataGridView1.Rows.RemoveAt(dataGridView1.Rows.Count - 2);
                dataGridView1.Rows[e.RowIndex].Cells[5].Value = "Delete";
                sqlAdapter.Update(dataset, "tbl_students");
            }
            else if (Task == "Update")
            {
                int r = e.RowIndex;
                dataset.Tables["tbl_students"].Rows[r]["id"] = dataGridView1.Rows[r].Cells["id"].Value;
                dataset.Tables["tbl_students"].Rows[r]["name"] = dataGridView1.Rows[r].Cells["name"].Value;
                dataset.Tables["tbl_students"].Rows[r]["address"] = dataGridView1.Rows[r].Cells["address"].Value;
                dataset.Tables["tbl_students"].Rows[r]["phone"] = dataGridView1.Rows[r].Cells["phone"].Value;
                dataset.Tables["tbl_students"].Rows[r]["email"] = dataGridView1.Rows[r].Cells["email"].Value;
                sqlAdapter.Update(dataset, "tbl_students");
                dataGridView1.Rows[e.RowIndex].Cells[5].Value = "Delete";
            }
        }
    }
    catch (Exception ex) {
        MessageBox.Show(ex.Message);
    }           
 }

- Tiếp đến, ta viết sự kiện userAddRow để khi thêm một dòng mới vào cơ sở dữ liệu .

private void dataGridView1_UserAddedRow_1(object sender, DataGridViewRowEventArgs e)
 {
            try
            {
                int lastRow = dataGridView1.Rows.Count - 2;
                DataGridViewRow nRow = dataGridView1.Rows[lastRow];
                DataGridViewLinkCell linkCell = new DataGridViewLinkCell();
                dataGridView1[5, lastRow] = linkCell;
                nRow.Cells["Delete"].Value = "Insert";
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
 }

- Và sau cuối tất cả chúng ta viết sự kiện khi double click vào datagridview để update một dòng dữ liệu .

private void dataGridView1_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
 {
            try
            {
                int lastRow = e.RowIndex  ;
                DataGridViewRow nRow = dataGridView1.Rows[lastRow];
                DataGridViewLinkCell linkCell = new DataGridViewLinkCell();
                dataGridView1[5, lastRow] = linkCell;
                nRow.Cells["Delete"].Value = "Update";
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); 
}     

- Vậy là kết thúc, giờ đây những bạn hoàn toàn có thể chạy để test thử chương trình .

heartCám ơn các bạn đã theo dõi bài viết của mình.  Hãy like and share để ủng hộ chúng mình. 

Download project Crub on Datagridview

Lập trình ứng dụng thêm – xóa – sửa trực tiếp trên DataGridview (Crub database on DataGridview use Cshap)

Bài viết liên quan
Hotline 24/7: O984.666.352
Alternate Text Gọi ngay