private void delete_v_rpt_bao_cao_tinh_hinh_di_hoc()
 {
     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;
     US_V_RPT_BAO_CAO_TINH_HINH_DI_HOC v_us = new US_V_RPT_BAO_CAO_TINH_HINH_DI_HOC();
     grid2us_object(v_us, m_fg.Row);
     try
     {
         v_us.BeginTransaction();
         v_us.Delete();
         v_us.CommitTransaction();
         m_fg.Rows.Remove(m_fg.Row);
     }
     catch (Exception v_e)
     {
         v_us.Rollback();
         CDBExceptionHandler v_objErrHandler = new CDBExceptionHandler(v_e,
             new CDBClientDBExceptionInterpret());
         v_objErrHandler.showErrorMessage();
     }
 }
        private void load_cot_dong_tung_ngay_hoc(DS_V_RPT_BAO_CAO_TINH_HINH_DI_HOC ip_ds_rpt)
        {
            //Buoc 0: Xoa cot dong
            if (m_fg.Cols.Count > 6)
            {
                int v_tong_so_cot = m_fg.Cols.Count;
                for (int i = 6; i < v_tong_so_cot; i++)
                {
                    m_fg.Cols.Remove(m_fg.Cols.Count - 1);
                }
            }

            //Buoc 1: Lay du lieu cac ban ghi trong GD_HOC do len Dataset
            DataSet v_ds_gd_hoc = new DataSet();
            v_ds_gd_hoc.Tables.Add();
            US_V_RPT_BAO_CAO_TINH_HINH_DI_HOC v_us_gd_hoc = new US_V_RPT_BAO_CAO_TINH_HINH_DI_HOC();
            v_us_gd_hoc.FillDuLieuDiemDanh(v_ds_gd_hoc
                                        , m_dat_tu_ngay.Value
                                        , m_dat_den_ngay.Value
                                        , CIPConvert.ToDecimal(m_cbo_lop_mon.SelectedValue));
            DataView v_dv = v_ds_gd_hoc.Tables[0].DefaultView;

            //Buoc 2:Insert cac ngay hoc cua lop do
            //Buoc 2.1: Lay du lieu cac ngay hoc
            DataSet v_ds_ngay_hoc = new DataSet();
            v_ds_ngay_hoc.Tables.Add();
            US_V_RPT_BAO_CAO_TINH_HINH_DI_HOC v_us_ngay_hoc = new US_V_RPT_BAO_CAO_TINH_HINH_DI_HOC();
            v_us_ngay_hoc.FillDuLieuNgayHoc(v_ds_ngay_hoc
                                            , m_dat_tu_ngay.Value
                                            , m_dat_den_ngay.Value
                                            , CIPConvert.ToDecimal(m_cbo_lop_mon.SelectedValue));
            //Buoc 2.2: Insert cac cot vao grid
            int v_count_col_grid = m_fg.Cols.Count;
            for (int i = 0; i < v_ds_ngay_hoc.Tables[0].Rows.Count; i++)//For tren cac ngay hoc
            {
                m_fg.Cols.Insert(v_count_col_grid);
                DateTime v_dat = CIPConvert.ToDatetime(v_ds_ngay_hoc.Tables[0].Rows[i][0].ToString().Substring(0, 10));
                m_fg.Cols[v_count_col_grid].Caption = v_ds_ngay_hoc.Tables[0].Rows[i][0].ToString().Substring(0, 10);
                m_fg.Cols[v_count_col_grid].DataType = typeof(Boolean);

                for (int v_i_current_row = m_fg.Rows.Fixed; v_i_current_row < m_fg.Rows.Count; v_i_current_row++)
                {
                    US_V_RPT_BAO_CAO_TINH_HINH_DI_HOC v_us_di_hoc = new US_V_RPT_BAO_CAO_TINH_HINH_DI_HOC();
                    grid2us_object(v_us_di_hoc, v_i_current_row);
                    foreach (DataRow v_dr in v_ds_gd_hoc.Tables[0].Rows)
                    {
                        if (v_dr["NGAY_HOC"].ToString() == v_dat.ToString() && v_dr["ID_HOC_SINH"].ToString() == v_us_di_hoc.dcID_HOC_SINH.ToString())
                        {
                            m_fg.SetCellCheck(v_i_current_row, v_count_col_grid, CheckEnum.Checked);
                        }
                    }
                }
                v_count_col_grid++;
            }
        }
 private void us_object2grid(US_V_RPT_BAO_CAO_TINH_HINH_DI_HOC 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 grid2us_object(US_V_RPT_BAO_CAO_TINH_HINH_DI_HOC 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);
 }