private void gridView1_ValidateRow(object sender, DevExpress.XtraGrid.Views.Base.ValidateRowEventArgs e)
        {
            try
            {
                GridView view = sender as GridView;
                _KTNGAYLERepo = new KTNGAYLERepo();
                //Kiểm tra đây là dòng dữ liệu mới hay cũ, nếu là mới thì mình insert
                if (view.IsNewItemRow(e.RowHandle))
                {
                    //e.RowHandle trả về giá trị int là thứ tự của dòng hiện tại
                    KT_NGAY_LE obj = new KT_NGAY_LE();
                    Get_Data(obj, e.RowHandle);
                    _KTNGAYLERepo.Create(obj);

                }
                //Cũ thì update
                else
                {
                    int _id = Utils.CIntDef(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "ID").ToString(), 0);
                    KT_NGAY_LE obj = _KTNGAYLERepo.GetById(_id);
                    if (obj != null)
                    {
                        Get_Data(obj, e.RowHandle);
                        _KTNGAYLERepo.Update(obj);
                    }
                }
                Load_Data();
            }
            catch (Exception ex)
            {
                e.Valid = false;
                MessageBox.Show(ex.Message, "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
 private void Save_Duplicate()
 {
     try
     {
         if (MessageBox.Show("Bạn có muốn copy dòng này thành dòng mới?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
         {
             _KTNGAYLERepo = new KTNGAYLERepo();
             KT_NGAY_LE obj = new KT_NGAY_LE();
             Get_Data(obj, gridView1.FocusedRowHandle);
             _KTNGAYLERepo.Create(obj);
             MessageBox.Show("Đã copy dòng này vào cuối bảng!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message, "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }