Lỗi khi thêm dữ liệu vào datagridview trong c năm 2024

7.71K lượt đã xem29/12/2020Lỗi code

xin chào admin và các bạn mình có 1 datagridview như hình, giờ thay vì thêm giá trị tại các textbox sau đó mới đổ vào database, giờ mình muốn khi bấm nút thêm(1) sẽ xuất hiện 1 dòng trống ở phía dưới cho người dùng nhập trực tiếp vào lưới luôn.sau khi nhập xong bấm nút lưu (2) sẽ tự động insert vô database. Có thể hướng dẫn mình cách làm với.mình mò mà chưa ra, do đang tự học code. xin cảm ơn.

Phan Tiến Answered question 29/12/2020

Cảm ơn câu hỏi của bạn. Đợt tới mình có thời gian mình sẽ làm 1 video hướng dẫn bạn. Bạn có thể tham khảo hướng dẫn theo link tiếng anh sau: //stackoverflow.com/questions/10556556/insert-all-data-of-a-datagridview-to-database-at-once

Phan Tiến Answered question 29/12/2020

Originally posted by 12520222

Nhờ mọi người giúp vấn đề sau đây: Chức năng thêm và xóa dữ liệu em đã viết xong. Ban đầu nếu xóa dòng cuối cùng thì không vấn đề gì bởi vì nó không ảnh hưởng đến các dòng đầu (đặt khóa chính là STT) [ATTACH=CONFIG]11413[/ATTACH] Nhưng khi xóa những dòng đầu tiên, khóa chính không cập nhật trên cả SQL và datagridview VD: STT Tên 1 A 2 B 3 C Sau khi chọn Xóa dòng đầu tiên hiển thị là: STT Tên 2 B 3 C Hoặc khi xóa hết cả 3 dòng, bắt đầu thêm lại dữ liệu thì dòng đầu tiên lại có STT là 4 Còn đây là code chức năng thêm vào: //pastebin.com/aXpV8d86 Vậy làm cách nào sau khi xóa Tên A, thì Tên B được đẩy lên lại với STT là 1 Nói chung mới đầu 1 2 3 4... thì xóa dòng cuối cùng không vấn đề gì, nhưng khi xóa những dòng phía trên thì làm cách nào để giải quyết?

Em lấy thời gian làm khóa chính thay vì stt đi, mỗi lần xóa, sửa, thêm thì load lại grid: Xóa, sửa,... -> Update Database -> Load grid, vd nha: sql = "select * from " + TABLE + " WHERE ...." dsSft1 = CMgrDataBase.GetInstance().ReturnDataSet(sql) ' dsSft1 là DataSet, dòng này đơn giản là get dataset thôi, đừng quan tâm đến CMgrDataBase.GetInstance().ReturnDataSet(sql), cứ làm theo cách của e count11 = dsSft1.Tables(0).Rows.Count If count11 = 0 Then Exit Sub End If

r = dsSft1.Tables(0).Rows(0) 'r là datarow nha grid(0, 0).Value = 1 grid(0, 1).Value = r("name colum").ToString grid(0, 2).Value = r("name colum1").ToString

Nếu muốn thêm hàng thì làm thêm vòng for. Sự kiện click vào grid thì dùng sự kiền Click hay MouseDown : Private Sub grid_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles grid.MouseDown If (grid.MouseCell.Column = 1) And grid.MouseCell.DisplayText.Length() > 0 Then tbx.text = grid(grid.MouseCellPosition.Row, 1).Value End If End Sub

code này là vb.net, nhưng nó cũng giống c# thôi

Vừa qua, tôi đã làm xong đồ án môn học với đề tài viết chương trình quản lý sinh viên bằng ngôn ngữ C#. Và nhận được số điểm cũng tàm tạm. Tiện đây, tôi muốn chia sẻ với các bạn đề tài này với nội dung là thêm, xóa, sửa trực tiếp trên datagridview bằng ngôn ngữ C#. Mục đích chia sẻ bởi vì trong quá trình tôi làm đồ án, tôi tìm kiếm trên mạng chỉ có một ít nguồn tham khảo - rất khó. Hy vọng, tôi chia sẻ nó trên bài viết này sẽ giúp tôi có thể tối ưu chương trình hơn và cũng giúp các bạn có một nguồn tham khảo tương đối.

Chương trình kết nối với SQL Server (2000), các bạn tự tạo cơ sở dữ liệu quản lý sinh viên và tham khảo nguồn code trong bài viết dưới đây để hoàn thiện bài làm của mình nhé.

Form Sinh viên:

Khai báo kết nối sql bằng cách thêm dòng lệnh:

using System.Data.SqlClient;

Khai báo các biến toàn cục để kết nối dữ liệu SQL bằng cách thêm các dòng lệnh trong class Sinhvien:

string connectionString; SqlConnection conn = new SqlConnection(); DataSet ds; SqlDataAdapter da;

Viết hàm LoadData() để đưa dữ liệu lên dataGridViewSinhvien:

private void LoadData() { connectionString = "Data Source=JackyChan;Initial Catalog=QLSV;Integrated Security=True"; ds = new DataSet(); string query = "Select * from Khoa"; try { SqlConnection conn = new SqlConnection(connectionString); da = new SqlDataAdapter(query, conn); da.Fill(ds, "Khoa"); (dataGridViewSinhvien.Columns["Makhoa"] as DataGridViewComboBoxColumn).DataSource = ds.Tables["Khoa"]; (dataGridViewSinhvien.Columns["Makhoa"] as DataGridViewComboBoxColumn).DisplayMember = "Makhoa"; (dataGridViewSinhvien.Columns["Makhoa"] as DataGridViewComboBoxColumn).ValueMember = "Makhoa"; da.SelectCommand.CommandText = "Select * from Sinhvien"; da.Fill(ds, "Sinhvien"); dataGridViewSinhvien.DataSource = ds.Tables["Sinhvien"]; } catch (SqlException ex) { MessageBox.Show(ex.Message); } } Gọi hàm LoadData() trong Form load bằng cách nhấp đúp chuột vào Form Sinh viên, sau đó thêm vào dòng lệnh:

private void Sinhvien_Load(object sender, EventArgs e) { LoadData(); } Nhấp đúp chuột vào buttonLuu và viết các lệnh như sau:

private void buttonLuu_Click(object sender, EventArgs e) { try { SqlConnection conn = new SqlConnection(connectionString); conn.Open(); int CurrentIndex = dataGridViewSinhvien.CurrentCell.RowIndex; string Masv = Convert.ToString(dataGridViewSinhvien.Rows[CurrentIndex].Cells[0].Value.ToString()); string Holot = Convert.ToString(dataGridViewSinhvien.Rows[CurrentIndex].Cells[1].Value.ToString()); string Ten = Convert.ToString(dataGridViewSinhvien.Rows[CurrentIndex].Cells[2].Value.ToString()); string Phai = Convert.ToString(dataGridViewSinhvien.Rows[CurrentIndex].Cells[3].Value.ToString()); string Ngaysinh = Convert.ToString(dataGridViewSinhvien.Rows[CurrentIndex].Cells[4].Value.ToString()); string Makhoa = Convert.ToString(dataGridViewSinhvien.Rows[CurrentIndex].Cells[5].Value.ToString()); string insertStr = "Insert into Sinhvien Values('" + Masv + "','" + Holot + "','" + Ten + "','" + Phai + "','" + Ngaysinh + "','" + Makhoa + "')"; SqlCommand insertCmd = new SqlCommand(insertStr, conn); insertCmd.CommandType = CommandType.Text; insertCmd.ExecuteNonQuery(); LoadData(); MessageBox.Show("Bạn đã lưu thành công!", "THÔNG BÁO", MessageBoxButtons.OK); conn.Close(); } catch (SqlException ex) { MessageBox.Show(ex.Message); } } Nhấp đúp chuột vào buttonXoa và viết các lệnh như sau:

private void buttonXoa_Click(object sender, EventArgs e) { try { SqlConnection conn = new SqlConnection(connectionString); conn.Open(); int CurrentIndex = dataGridViewSinhvien.CurrentCell.RowIndex; string Masv =Convert.ToString (dataGridViewSinhvien.Rows[CurrentIndex].Cells[0].Value.ToString ()); string deletedStr = "Delete from Sinhvien where Masv='" + Masv + "'"; SqlCommand deletedCmd = new SqlCommand(deletedStr, conn); deletedCmd.CommandType = CommandType.Text; deletedCmd.ExecuteNonQuery(); da.Update(ds,"Sinhvien"); LoadData(); MessageBox.Show("Bạn đã xóa thành công!", "THÔNG BÁO", MessageBoxButtons.OK); conn.Close(); } catch (SqlException ex) { MessageBox.Show(ex.Message); } } Nhấp đúp chuột vào buttonSua và viết các lệnh sau:

private void buttonSua_Click(object sender, EventArgs e) { try { SqlConnection conn = new SqlConnection(connectionString); conn.Open(); int CurrentIndex = dataGridViewSinhvien.CurrentCell.RowIndex; string Masv = Convert.ToString(dataGridViewSinhvien.Rows[CurrentIndex].Cells[0].Value.ToString()); string Holot = Convert.ToString(dataGridViewSinhvien.Rows[CurrentIndex].Cells[1].Value.ToString()); string Ten = Convert.ToString(dataGridViewSinhvien.Rows[CurrentIndex].Cells[2].Value.ToString()); string Phai = Convert.ToString(dataGridViewSinhvien.Rows[CurrentIndex].Cells[3].Value.ToString()); string Ngaysinh = Convert.ToString(dataGridViewSinhvien.Rows[CurrentIndex].Cells[4].Value.ToString()); string Makhoa = Convert.ToString(dataGridViewSinhvien.Rows[CurrentIndex].Cells[5].Value.ToString()); string updateStr = "Update Sinhvien set Masv='" + Masv + "',Holot='" + Holot + "',Ten='" + Ten + "',Phai='" + Phai + "',Ngaysinh='" + Ngaysinh + "',Makhoa='" + Makhoa + "' where Masv='" + Masv + "'"; SqlCommand updateCmd = new SqlCommand(updateStr, conn); updateCmd.CommandType = CommandType.Text; updateCmd.ExecuteNonQuery(); LoadData(); MessageBox.Show("Bạn đã sửa thành công!", "THÔNG BÁO", MessageBoxButtons.OK); conn.Close(); } catch (SqlException ex) { MessageBox.Show(ex.Message); } } Nhấp đúp chuột vào buttonThoat và thêm các dòng lệnh sau:

Quanlysinhvien _Quanlysinhvien = new Quanlysinhvien(); _Quanlysinhvien.Show(); Hide();

Tượng tự, bạn cũng tham khảo và hoàn thiện cho các form còn lại trong chương trình quản lý sinh viên. Nếu các bạn có nhu cầu tham khảo thêm, có thể tải tài liệu tham khảo của tôi tại đây.

Ngoài ra, các bạn có thể comment hoặc gửi mail liên hệ cho tôi. Tôi sẵn sàng trao đổi với bạn bất cứ thời gian nào.

Chủ đề