private void gridView1_ValidateRow(object sender, DevExpress.XtraGrid.Views.Base.ValidateRowEventArgs e)
        {
            try
            {
                GridView view = sender as GridView;

                //validation
                GridColumn maCol = view.Columns["MA_YTCP"];
                string ma = Utils.CStrDef(view.GetRowCellValue(e.RowHandle, maCol), "");
                if (ma.Trim().Length == 0 )
                {
                    e.Valid = false;
                    if (ma.Trim().Length == 0)
                        view.SetColumnError(maCol, "Mã yếu tố chi phí không được rổng");

                    return;
                }

                _KTYTCPRepo = new KTYTCPRepo();
                //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_YTCP obj = new KT_YTCP();

                    obj.MA_YTCP = Utils.CStrDef(view.GetRowCellValue(e.RowHandle, "MA_YTCP"), "");
                    obj.TEN_YTCP_V = Utils.CStrDef(view.GetRowCellValue(e.RowHandle, "TEN_YTCP_V"), "");
                    obj.TEN_YTCP_E = Utils.CStrDef(view.GetRowCellValue(e.RowHandle, "TEN_YTCP_E"), "");
                    obj.MA_NHOM1 = Utils.CStrDef(view.GetRowCellValue(e.RowHandle, "MA_NHOM1"), "");
                    obj.TEN_NHOM1 = Utils.CStrDef(view.GetRowCellValue(e.RowHandle, "TEN_NHOM1"), "");
                    obj.MA_NHOM2 = Utils.CStrDef(view.GetRowCellValue(e.RowHandle, "MA_NHOM2"), "");
                    obj.TEN_NHOM2 = Utils.CStrDef(view.GetRowCellValue(e.RowHandle, "TEN_NHOM2"), "");
                    obj.DUNO_VND = Utils.CIntDef(view.GetRowCellValue(e.RowHandle, "DUNO_VND"), 0);
                    obj.DUCO_VND = Utils.CIntDef(view.GetRowCellValue(e.RowHandle, "DUCO_VND"), 0);
                    obj.PSNO_VND = Utils.CIntDef(view.GetRowCellValue(e.RowHandle, "PSNO_VND"), 0);
                    obj.PSCO_VND = Utils.CIntDef(view.GetRowCellValue(e.RowHandle, "PSCO_VND"), 0);
                    obj.CKNO_VND = Utils.CIntDef(view.GetRowCellValue(e.RowHandle, "CKNO_VND"), 0);
                    obj.CKCO_VND = Utils.CIntDef(view.GetRowCellValue(e.RowHandle, "CKCO_VND"), 0);
                    obj.DUNO_USD = Utils.CIntDef(view.GetRowCellValue(e.RowHandle, "DUNO_USD"), 0);
                    obj.DUCO_USD = Utils.CIntDef(view.GetRowCellValue(e.RowHandle, "DUCO_USD"), 0);
                    obj.PSNO_USD = Utils.CIntDef(view.GetRowCellValue(e.RowHandle, "PSNO_USD"), 0);
                    obj.PSCO_USD = Utils.CIntDef(view.GetRowCellValue(e.RowHandle, "PSCO_USD"), 0);
                    obj.CKNO_USD = Utils.CIntDef(view.GetRowCellValue(e.RowHandle, "CKNO_USD"), 0);
                    obj.CKCO_USD = Utils.CIntDef(view.GetRowCellValue(e.RowHandle, "CKCO_USD"), 0);
                    obj.PSNO_LK_VND = Utils.CIntDef(view.GetRowCellValue(e.RowHandle, "PSNO_LK_VND"), 0);
                    obj.PSCO_LK_VND = Utils.CDblDef(view.GetRowCellValue(e.RowHandle, "PSCO_LK_VND"), 0);
                    obj.PSNO_LK_USD = Utils.CDblDef(view.GetRowCellValue(e.RowHandle, "PSNO_LK_USD"), 0);
                    obj.PSCO_LK_USD = Utils.CDblDef(view.GetRowCellValue(e.RowHandle, "PSCO_LK_USD"), 0);
                    obj.DANH_DAU = Utils.CStrDef(view.GetRowCellValue(e.RowHandle, "DANH_DAU"), "");

                    _KTYTCPRepo.Create(obj);

                }
                //Cũ thì update
                else
                {
                    int id = Utils.CIntDef(view.GetRowCellValue(gridView1.FocusedRowHandle, "ID"), 0);
                    KT_YTCP obj = _KTYTCPRepo.GetById(id);
                    if (obj != null)
                    {
                        obj.MA_YTCP = Utils.CStrDef(view.GetRowCellValue(e.RowHandle, "MA_YTCP"), "");
                        obj.TEN_YTCP_V = Utils.CStrDef(view.GetRowCellValue(e.RowHandle, "TEN_YTCP_V"), "");
                        obj.TEN_YTCP_E = Utils.CStrDef(view.GetRowCellValue(e.RowHandle, "TEN_YTCP_E"), "");
                        obj.MA_NHOM1 = Utils.CStrDef(view.GetRowCellValue(e.RowHandle, "MA_NHOM1"), "");
                        obj.TEN_NHOM1 = Utils.CStrDef(view.GetRowCellValue(e.RowHandle, "TEN_NHOM1"), "");
                        obj.MA_NHOM2 = Utils.CStrDef(view.GetRowCellValue(e.RowHandle, "MA_NHOM2"), "");
                        obj.TEN_NHOM2 = Utils.CStrDef(view.GetRowCellValue(e.RowHandle, "TEN_NHOM2"), "");
                        obj.DUNO_VND = Utils.CIntDef(view.GetRowCellValue(e.RowHandle, "DUNO_VND"), 0);
                        obj.DUCO_VND = Utils.CIntDef(view.GetRowCellValue(e.RowHandle, "DUCO_VND"), 0);
                        obj.PSNO_VND = Utils.CIntDef(view.GetRowCellValue(e.RowHandle, "PSNO_VND"), 0);
                        obj.PSCO_VND = Utils.CIntDef(view.GetRowCellValue(e.RowHandle, "PSCO_VND"), 0);
                        obj.CKNO_VND = Utils.CIntDef(view.GetRowCellValue(e.RowHandle, "CKNO_VND"), 0);
                        obj.CKCO_VND = Utils.CIntDef(view.GetRowCellValue(e.RowHandle, "CKCO_VND"), 0);
                        obj.DUNO_USD = Utils.CIntDef(view.GetRowCellValue(e.RowHandle, "DUNO_USD"), 0);
                        obj.DUCO_USD = Utils.CIntDef(view.GetRowCellValue(e.RowHandle, "DUCO_USD"), 0);
                        obj.PSNO_USD = Utils.CIntDef(view.GetRowCellValue(e.RowHandle, "PSNO_USD"), 0);
                        obj.PSCO_USD = Utils.CIntDef(view.GetRowCellValue(e.RowHandle, "PSCO_USD"), 0);
                        obj.CKNO_USD = Utils.CIntDef(view.GetRowCellValue(e.RowHandle, "CKNO_USD"), 0);
                        obj.CKCO_USD = Utils.CIntDef(view.GetRowCellValue(e.RowHandle, "CKCO_USD"), 0);
                        obj.PSNO_LK_VND = Utils.CIntDef(view.GetRowCellValue(e.RowHandle, "PSNO_LK_VND"), 0);
                        obj.PSCO_LK_VND = Utils.CDblDef(view.GetRowCellValue(e.RowHandle, "PSCO_LK_VND"), 0);
                        obj.PSNO_LK_USD = Utils.CDblDef(view.GetRowCellValue(e.RowHandle, "PSNO_LK_USD"), 0);
                        obj.PSCO_LK_USD = Utils.CDblDef(view.GetRowCellValue(e.RowHandle, "PSCO_LK_USD"), 0);
                        obj.DANH_DAU = Utils.CStrDef(view.GetRowCellValue(e.RowHandle, "DANH_DAU"), "");

                        _KTYTCPRepo.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)
                {
                    _KTYTCPRepo = new KTYTCPRepo();
                    KT_YTCP obj = new KT_YTCP();

                    obj.MA_YTCP = Utils.CStrDef(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "MA_YTCP"), "");
                    obj.TEN_YTCP_V = Utils.CStrDef(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "TEN_YTCP_V"), "");
                    obj.TEN_YTCP_E = Utils.CStrDef(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "TEN_YTCP_E"), "");
                    obj.MA_NHOM1 = Utils.CStrDef(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "MA_NHOM1"), "");
                    obj.TEN_NHOM1 = Utils.CStrDef(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "TEN_NHOM1"), "");
                    obj.MA_NHOM2 = Utils.CStrDef(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "MA_NHOM2"), "");
                    obj.TEN_NHOM2 = Utils.CStrDef(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "TEN_NHOM2"), "");
                    obj.DUNO_VND = Utils.CIntDef(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "DUNO_VND"), 0);
                    obj.DUCO_VND = Utils.CIntDef(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "DUCO_VND"), 0);
                    obj.PSNO_VND = Utils.CIntDef(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "PSNO_VND"), 0);
                    obj.PSCO_VND = Utils.CIntDef(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "PSCO_VND"), 0);
                    obj.CKNO_VND = Utils.CIntDef(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "CKNO_VND"), 0);
                    obj.CKCO_VND = Utils.CIntDef(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "CKCO_VND"), 0);
                    obj.DUNO_USD = Utils.CIntDef(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "DUNO_USD"), 0);
                    obj.DUCO_USD = Utils.CIntDef(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "DUCO_USD"), 0);
                    obj.PSNO_USD = Utils.CIntDef(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "PSNO_USD"), 0);
                    obj.PSCO_USD = Utils.CIntDef(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "PSCO_USD"), 0);
                    obj.CKNO_USD = Utils.CIntDef(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "CKNO_USD"), 0);
                    obj.CKCO_USD = Utils.CIntDef(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "CKCO_USD"), 0);
                    obj.PSNO_LK_VND = Utils.CIntDef(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "PSNO_LK_VND"), 0);
                    obj.PSCO_LK_VND = Utils.CDblDef(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "PSCO_LK_VND"), 0);
                    obj.PSNO_LK_USD = Utils.CDblDef(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "PSNO_LK_USD"), 0);
                    obj.PSCO_LK_USD = Utils.CDblDef(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "PSCO_LK_USD"), 0);
                    obj.DANH_DAU = Utils.CStrDef(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "DANH_DAU"), "");

                    _KTYTCPRepo.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);
            }
        }