private void btnThem_Click(object sender, EventArgs e) { //1. lấy dữ liệu từ form dtpThang.Update(); currMonth = dtpThang.Value; //-----------BUG [KHÔNG PHẢI BUG] CHỈ TÔ MÀU ĐỂ CHÚ Ý] bắt buộc EndEdit thao tác trên Grid rồi mới thực hiện xử lý tác vụ dgrdDSNVTrgPhg.EndEdit(); dgrdDSNVTrgPhg.Update(); //2. lấy danh sách nhân viên check object[,] arrDSNVCheck = new object[dgrdDSNVTrgPhg.Rows.Count + 1, 2]; LayDSMaCC_MaNV_Checked(dgrdDSNVTrgPhg.DataSource as DataTable, arrDSNVCheck); if ((int)arrDSNVCheck[0, 0] == 0) { AutoClosingMessageBox.Show("Chưa chọn Nhân viên", "Thông báo", 2000); return; } // lấy ngày check List <DateTime> DSNgayCheck = LayNgayCheck(checklistNgay); // lấy loại vắng DataRowView row = cbLoaiVang.SelectedItem as DataRowView; bool kqThaotac = XL.KhaiBaoNgayVangChoNV(arrDSNVCheck, DSNgayCheck, row); if (kqThaotac == false) { MessageBox.Show("Có lỗi trong quá trình thực hiện. Vui lòng kiểm tra lại dữ liệu.", "Lỗi"); } // sau khi thao tác xong thì liệt kê lại btnLietKe_Click(btnLietKe, null); }