private void us_object2grid(US_V_GD_LUONG_THEO_QD i_us
                                    , int i_grid_row)
        {
            DataRow v_dr = (DataRow)m_fg.Rows[i_grid_row].UserData;

            i_us.Me2DataRow(v_dr);
            m_obj_trans.DataRow2GridRow(v_dr, i_grid_row);
        }
        private void init_members()
        {
            m_us_dm_quyet_dinh = new US_DM_QUYET_DINH();
            m_ds_dm_quyet_dinh = new DS_DM_QUYET_DINH();

            m_us_v_gd_luong_theo_qd = new US_V_GD_LUONG_THEO_QD();
            m_ds_gd_luong_theo_qd   = new DS_GD_LUONG_THEO_QD();
        }
        public void display_for_update(US_V_GD_LUONG_THEO_QD m_us)
        {
            m_e_form_mode = DataEntryFormMode.UpdateDataState;
            m_e_file_mode = DataEntryFileMode.EditFile;

            us_2_form(m_us);
            this.ShowDialog();
        }
        private void grid2us_object(US_V_GD_LUONG_THEO_QD i_us
                                    , int i_grid_row)
        {
            DataRow v_dr;

            v_dr = (DataRow)m_fg.Rows[i_grid_row].UserData;
            m_obj_trans.GridRow2DataRow(i_grid_row, v_dr);
            i_us.DataRow2Me(v_dr);
        }
        private void delete_v_gd_luong_theo_qd()
        {
            // Check validation
            if (!CGridUtils.IsThere_Any_NonFixed_Row(m_fg))
            {
                return;
            }
            if (!CGridUtils.isValid_NonFixed_RowIndex(m_fg, m_fg.Row))
            {
                return;
            }
            if (BaseMessages.askUser_DataCouldBeDeleted(8) != BaseMessages.IsDataCouldBeDeleted.CouldBeDeleted)
            {
                return;
            }

            // Init
            US_V_GD_LUONG_THEO_QD v_us_v_gd = new US_V_GD_LUONG_THEO_QD();

            // Grid 2 us
            grid2us_object(v_us_v_gd, m_fg.Row);

            try
            {
                m_fg.Redraw = false;
                v_us_v_gd.BeginTransaction();
                v_us_v_gd.DeleteByID(v_us_v_gd.dcID_QUYET_DINH);
                v_us_v_gd.CommitTransaction();
                m_fg.Rows.Remove(m_fg.Row);
                m_fg.Redraw = true;
            }
            catch (Exception v_e)
            {
                v_us_v_gd.Rollback();
                CDBExceptionHandler v_objErrHandler = new CDBExceptionHandler(v_e,
                                                                              new CDBClientDBExceptionInterpret());
                v_objErrHandler.showErrorMessage();
            }
        }
        /// <summary>
        /// Dùng cho việc Update. Load dữ liệu lên form + m_us tương ứng (thường là load ID cho us object)
        /// </summary>
        /// <param name="ip_us">US dùng để load dữ liệu lên form + m_us</param>
        private void us_2_form(US_V_GD_LUONG_THEO_QD ip_us)
        {
            // To group box Quyết định
            m_us_dm_quyet_dinh.dcID = ip_us.dcID_QUYET_DINH > 0 ? ip_us.dcID_QUYET_DINH : -1;

            m_txt_ma_quyet_dinh.Text         = ip_us.strMA_QD;
            m_dat_ngay_ky.Value              = ip_us.datNGAY_KY;
            m_dat_ngay_het_hieu_luc_qd.Value = ip_us.datNGAY_CO_HIEU_LUC;

            DateTime v_dat      = ip_us.datNGAY_HET_HIEU_LUC;
            DateTime v_null_dat = new DateTime(1900, 1, 1, 0, 0, 0); // Nếu giá trị trong DataBase là NULL thì giá trị DateTime sẽ bằng 1/1/1900 12:00:00 AM

            if (v_dat == v_null_dat)
            {
                m_dat_ngay_het_hieu_luc_qd.Checked = false;
                m_dat_ngay_het_hieu_luc_qd.Value   = DateTime.Today;
            }
            else
            {
                m_dat_ngay_het_hieu_luc_qd.Checked = true;
                m_dat_ngay_het_hieu_luc_qd.Value   = v_dat;
            }

            m_cbo_loai_quyet_dinh.SelectedValue = ip_us.dcID_LOAI_QD;
            m_txt_noi_dung.Text = ip_us.strNOI_DUNG;
            // Tài liệu đính kèm
            m_ofd_chon_file.FileName = ip_us.strLINK;

            // To group box Lương
            m_us_v_gd_luong_theo_qd.dcID = ip_us.dcID > 0 ? ip_us.dcID : -1;

            m_txt_nhan_vien.Text         = ip_us.strHO_DEM + " - " + ip_us.strTEN + " - " + ip_us.strMA_NV;
            m_txt_ky.Text                = ip_us.strMA_KY;
            m_num_luong.Value            = ip_us.dcLUONG;
            m_dat_ngay_ap_dung.Value     = ip_us.datNGAY_AP_DUNG;
            m_ckb_luong_hien_tai.Checked = ip_us.strLUONG_HIEN_TAI_YN == "Y" ? true : false;
        }