Làm việc trên Form:

Một phần của tài liệu PHẦN i: PROJECT và CONSOLE APPLICATION (Trang 27 - 33)

III. Xây dựng lớp kết nối dung chung: 1 Xây dựng lớp kết nối cơ sở dữ liệu:

3. Làm việc trên Form:

Yêu cầu:

-Load lên lưới toàn bộ o6ng tin các sinh viên trong table “sinhvien”

Các thông tin trên textbox,combobox… nhận hiển thị thong tin của sinh viên đầu tiên. Combo phái nạp hai giá trị là “Nam” và “Nữ”

Combo lớp nhận lớp trong table lớp

Khi chọn 1 SV khác trên lưới thì thông tin sẽ thay đổi theo.

Khi thêm, xoá, sửa một sinh viên thì nó cũng cập nhật trên lưới và thay đổi trong cả table. Thoát thì thoát form.

Tìm hiểu thêm về một số công cụ thông dụng và một số đối tượng như: Combobox, DataGridView

a. Combobox:

//chèn thêm giá trị vào

this.cboLop.Items.Add("Lop 1"); this.cboLop.Items.Add("Lop 2"); this.cboLop.Items.Add("Lop 3"); this.cboLop.Items.Add("Lop 4");

this.cboLop.SelectedIndex = 0;//cho hiển thị giá trị ban đầu. //hiển thị giá trị từ một table có sẵn (hiển thị thông tin lớp) cboLop.DisplayMember = "tenlop";//hiển thị ra là tên lớp cboLop.ValueMember = "mslop";//giá trị lưu là mã lớp c_Lop a = new c_Lop();

cboLop.DataSource = a.LaydsLop("select * from lop");//dữ liệu lấy từ table “lop”

b. DataTable:

Khai báo: DataTable dt= new DataTable (nếu không nhận được đối tượng ta phải khia báo thêm môi trường using System.Data;

c. DataGridView: dùng để trình bày dữ liệu có trong đối tượng//trả về dòng có con trỏ hiện hành //trả về dòng có con trỏ hiện hành

DataGridViewRow dgv = dgvSV.CurrentRow; //nhận giá trị đưa vào lưới như sau:

string sql = "select * from sinhvien";

DataTable dt = DataServices.ExecuteQuery(sql); dgvLK.DataSource = dt;

***code cho bài trên***

Trong Form_load: là các yếu tố ban đầu khi form load lên.

private void frmQLSV_Load(object sender, EventArgs e)

{

//hiển thị thông tin của phái. this.cboPhai.Items.Add("Nam"); this.cboPhai.Items.Add("Nữ"); this.cboPhai.SelectedIndex = 0;

//hiển thị thông tin lớp

cboLop.DisplayMember = "tenlop"; cboLop.ValueMember = "mslop"; c_Lop a = new c_Lop();

cboLop.DataSource = a.LaydsLop("select * from lop"); //hiển thị trong lưới sinh viên

String sql = "select

MSSV,HOTENSV,PHAI,NGAYSINH,SOCMND,SODT,DIACHI,TENLOP from sinhvien,lop where sinhvien.mslop=lop.mslop";

DataTable dt = DataServices.ExecuteQuery(sql); dgvSV.DataSource = dt;

}

Khi chọn 1 SV khác trên lưới thì thông tin sẽ thay đổi theo. Ta dùng sự kiện Click hay sự kiện CellContentClick (nên dùng sự kiện Click)

private void dgvSV_Click(object sender, EventArgs e)

{ DataGridViewRow dgv = dgvSV.CurrentRow; txtMssv.Text = Convert.ToString(dgv.Cells[0].Value); txtHoten.Text = Convert.ToString(dgv.Cells[1].Value); cboPhai.Text = Convert.ToString(dgv.Cells[2].Value); dtpNgaysinh.Value = DateTime.Parse(Convert.ToString(dgv.Cells[3].Value)); txtSoCMND.Text = Convert.ToString(dgv.Cells[4].Value); txtSodt.Text = Convert.ToString(dgv.Cells[5].Value); txtDiachi.Text = Convert.ToString(dgv.Cells[6].Value); cboLop.Text = Convert.ToString(dgv.Cells[7].Value); } //nút thoát

private void btnThoat_Click(object sender, EventArgs e)

{

DialogResult dr = MessageBox.Show("Bạn có muốn thoát không???", "THÔNG BÁO", MessageBoxButtons.YesNo, MessageBoxIcon.Information); if (dr == DialogResult.Yes) { this.Close(); } } //nút thêm

private void btnThem_Click(object sender, EventArgs e)

{

c_Sinhvien sv = new c_Sinhvien();

//cho giá trị bên class nhận giá trị của form để thực thi sv.Mssv = txtMssv.Text; sv.Hotensv = txtHoten.Text; sv.Phai = cboPhai.Text; sv.Ngaysinh = DateTime.Parse(dtpNgaysinh.Value.ToString()); sv.Socmnd = txtSoCMND.Text; sv.Sodt = txtSodt.Text; sv.Diachi = txtDiachi.Text; sv.Mslop = cboLop.SelectedValue.ToString(); sv.ThemSV();

//hiển thị giá trị sinh viên String sql = "select

MSSV,HOTENSV,PHAI,NGAYSINH,SOCMND,SODT,DIACHI,TENLOP from sinhvien,lop where sinhvien.mslop=lop.mslop";

DataTable dt = DataServices.ExecuteQuery(sql); dgvSV.DataSource = dt;

MessageBox.Show("Đã thêm một Record"); }

//nút xoá

private void btnXoa_Click(object sender, EventArgs e)

{

DataGridViewRow dgv = dgvSV.CurrentRow;

string maSV = Convert.ToString(dgv.Cells[0].Value); c_Sinhvien sv = new c_Sinhvien();

sv.XoaSV(maSV);

MessageBox.Show("Xoá một record trong bảng hoá đơn"); //hiển thị lại danh sách sinh viên

String sql = "select

MSSV,HOTENSV,PHAI,NGAYSINH,SOCMND,SODT,DIACHI,TENLOP from sinhvien,lop where sinhvien.mslop=lop.mslop";

DataTable dt = DataServices.ExecuteQuery(sql); dgvSV.DataSource = dt;

} //nút sửa

private void btnSua_Click(object sender, EventArgs e)

{

txtMssv.Text = false;

MessageBox.Show("Sau khi thay đổi xong bạn nhấn nút 'Lưu'"); }

//nút lưu

private void btnLuu_Click(object sender, EventArgs e)

{

DataGridViewRow dgv = dgvSV.CurrentRow; string masv = Convert.ToString(dgv.Cells[0].Value); txtMssv.Enabled = true;

c_Sinhvien sv = new c_Sinhvien();

//cho giá trị bên class nhận giá trị của form để thực thi sv.Hotensv = txtHoten.Text; sv.Phai = cboPhai.Text; sv.Ngaysinh = DateTime.Parse(dtpNgaysinh.Value.ToString()); sv.Socmnd = txtSoCMND.Text; sv.Sodt = txtSodt.Text; sv.Diachi = txtDiachi.Text; sv.Mslop = cboLop.SelectedValue.ToString(); sv.SuaSV(masv);

//hiển thị lại lưới String sql = "select

MSSV,HOTENSV,PHAI,NGAYSINH,SOCMND,SODT,DIACHI,TENLOP from sinhvien,lop where sinhvien.mslop=lop.mslop"; DataTable dt = DataServices.ExecuteQuery(sql); dgvSV.DataSource = dt; MessageBox.Show("Đã cập nhật xong"); }  Nhận xét.

1. Hiển thị danh sách sinh viên trong sự kiện Load form, nút thêm, nút xoá, nút sửa đều có. Ta rút ngắn lại và thự hiện như sau:

{

String sql = "select

MSSV,HOTENSV,PHAI,NGAYSINH,SOCMND,SODT,DIACHI,TENLOP from sinhvien,lop where sinhvien.mslop=lop.mslop";

DataTable dt = DataServices.ExecuteQuery(sql); dgvSV.DataSource = dt;

}

Ta gọi tên Phương thức “HienthiDSSV()” trong các sự kiện trên không phải gọi các dòng code. 2. Gọi sinh viên đầu tiên trong sự kiện Load và sự kiện Click của DataGridView

Private void ChonSV()

{ DataGridViewRow dgv = dgvSV.CurrentRow; txtMssv.Text = Convert.ToString(dgv.Cells[0].Value); txtHoten.Text = Convert.ToString(dgv.Cells[1].Value); cboPhai.Text = Convert.ToString(dgv.Cells[2].Value); dtpNgaysinh.Value = DateTime.Parse(Convert.ToString(dgv.Cells[3].Value)); txtSoCMND.Text = Convert.ToString(dgv.Cells[4].Value); txtSodt.Text = Convert.ToString(dgv.Cells[5].Value); txtDiachi.Text = Convert.ToString(dgv.Cells[6].Value); cboLop.Text = Convert.ToString(dgv.Cells[7].Value); }

Ta gọi Phương thức “ChonSV()” trong các sự kiện trên không phải gọi các dòng code 3. Khi nhập sinh viên có dấu thì nó sẽ bị lỗi chữ.

Bài tập

1. Hãy thiết kế Form lớp đặt tên form “frmLop” như sau:

Thực hiện việc thêm, xóa, sửa thông tin lớp (tương tự như Form Sinh viên) 2. Hãy thiết kế Form Môn học đặt tên form “frmMonhoc” như sau:

Thực hiện việc thêm, xóa, sửa thông tin môn học (tương tự như Form Sinh viên) 3. Ta thực hiện sửa lại Form Sinh viên như sau:

Lưu ý:

- Kiểm tra lỗi khi thêm và sửa như:  Kiểm tra ngày sinh đạt 18t

 Chứng minh nhân dân là số và chỉ nhập đúng 9 số, nhập CMND không trùng.  Số ĐT là số nhận từ 10->12 số.

 Kiểm tra khoá chính khi nhập.

- Kiểm lỗi khi xoá: Hiển thị câu thông báo “Bạn có muốn xóa hay không?” nếu chọn “Yes” thì thiến hành xoá, chọn “No” không xoá. Nếu xoá mà ảnh hưởng bởi bảng “Ketqua” thì thông báo không cho xoá.

- Kiểm tra không cho nhập trống. - Bẫy phím nếu có.

4. Tương tự cho hai form lớp và Môn học hãy bẩy hết tất cả các lỗi có thể phát sinh.

Một phần của tài liệu PHẦN i: PROJECT và CONSOLE APPLICATION (Trang 27 - 33)

Tải bản đầy đủ (DOC)

(43 trang)
w