Thứ Tư, 12 tháng 8, 2015

Kiểm tra trùng và trống trên các form danh sách

 #region Kiểm tra Trùng tên tài liệu và Tên tài liệu trống trên GridView
///////////////////////////////////////////////////////////////////////////
        private TrungNoiDung KiemTraTrungLap(string p, int id)
        {
            foreach (tbTaiLieu obj in tbTaiLieuBindingSource)
            {
                if (obj.TenTaiLieu == p && id != obj.IdTaiLieu)
                {
                    return TrungNoiDung.Trung;
                }
            }
            return TrungNoiDung.KhongTrung;
        }
//////////////////////////////////////////////////////////////////////////////
        private void gridView2_ValidateRow(object sender, DevExpress.XtraGrid.Views.Base.ValidateRowEventArgs e)
        {
            try
            {
                GridView view = sender as GridView;
                int rowHandle = e.RowHandle;
                e.ErrorText = "CÓ: Bổ sung thông tin.\r\nKHÔNG: Hủy thao tác không bổ sung thêm thông tin.\r\n";
                if (Convert.ToString(view.GetRowCellValue(rowHandle, this.colTenTaiLieu)).ToString() == string.Empty)
                {
                    e.Valid = false;
                    view.SetColumnError(this.colTenTaiLieu, "Nhập tên tài liệu!");
                }
            }
            catch (Exception)
            {
            }
        }
/////////////////////////////////////////////////////////////////////////////////////////////////////////
        private void gridView2_ValidatingEditor(object sender, BaseContainerValidateEditorEventArgs e)
        {
            int id = ((tbTaiLieu)tbTaiLieuBindingSource.Current).IdTaiLieu;

            if (gridView2.FocusedColumn.Name == "colTenTaiLieu")
            {
                if (e.Value.ToString() == "" || KiemTraTrungLap(e.Value.ToString(), id) == TrungNoiDung.Trung)
                {
                    if (id == 0)
                    {
                        tbTaiLieuBindingSource.RemoveCurrent();
                        tbTaiLieuBindingSource.EndEdit();
                    }
                    e.Valid = false;
                }
            }
        }
////////////////////////////////////////////////////////////////////////////////////////////
        private void gridView2_InvalidValueException(object sender, InvalidValueExceptionEventArgs e)
        {
            gridView2.SetColumnError(gridView2.FocusedColumn, "Không được để trống ô này hoặc tên vừa nhập đã tồn tại. Vui lòng nhập tên khác!!", ErrorType.Critical);
            e.ExceptionMode = ExceptionMode.NoAction;
            e.WindowCaption = "Thông báo!";
            e.ErrorText = "Không được để trống ô này!\n\rHoặc tên vừa nhập đã tồn tại.\n\rVui lòng nhập tên khác!";
            // Destroying the editor and discarding the changes made within the edited cell
            gridView2.HideEditor();
        }
        #endregion Kiểm tra Trùng tên tài liệu và Tên tài liệu trống trên GridView  

Kiểm tra trống và Trùng dữ liệu trên các form thêm mới

// Trên các control như textbox...
private void txtTenTaiLieu_Validating(object sender, CancelEventArgs e)
{
            if (CheckTenTaiLieu(txtTenTaiLieu.Text) || txtTenTaiLieu.Text == "")
                e.Cancel = true;
}

private void txtTenTaiLieu_InvalidValue(object sender, InvalidValueExceptionEventArgs e)
{
            e.ExceptionMode = DevExpress.XtraEditors.Controls.ExceptionMode.NoAction;
            ThongBao.BaoLoi("Tên tài liệu này đã tồn tại hoặc đang để trống.\r\nVui lòng nhập tên khác!");
}

 bool CheckTenTaiLieu(string tentailieu)
 {
            return dbTaiLieu.tbTaiLieux.Where(t=>(t.TenTaiLieu == tentailieu && t.IdTieuMuc == (int)trvDanhMuc.SelectedNode.Tag && t.NamLuuTru == DateTime.Now.Year)).Count() > 0;

 }

// Trên girdView
private TrungNoiDung KiemTraTrungLap(string p, int id)
        {
            tbTaiLieuBindingSource.EndEdit();
            // Kiểm tra trên CSDL
            if (CheckTenTaiLieu(p)) return TrungNoiDung.Trung;
            foreach (tbTaiLieu obj in tbTaiLieuBindingSource)
            {
                // Kiểm tra trên các Tài liệu chưa thêm vào
                if (obj.TenTaiLieu == p && id != obj.IdTaiLieu)
                {
                    return TrungNoiDung.Trung;
                }
            }
            return TrungNoiDung.KhongTrung;
        }
/////////////////////////////////////////////////////////////////////////
        private void gridView19_ValidateRow(object sender, DevExpress.XtraGrid.Views.Base.ValidateRowEventArgs e)
        {
            try
            {
                GridView view = sender as GridView;
                int rowHandle = e.RowHandle;
                e.ErrorText = "CÓ: Bổ sung thông tin.\r\nKHÔNG: Hủy thao tác không bổ sung thêm thông tin.\r\n";
                if (Convert.ToString(view.GetRowCellValue(rowHandle, this.colTenTaiLieu)).ToString() == string.Empty)
                {
                    e.Valid = false;
                    view.SetColumnError(this.colTenTaiLieu, "Nhập tên tài liệu!");
                }
            }
            catch (Exception)
            {
            }
        }

        private void gridView19_ValidatingEditor(object sender, BaseContainerValidateEditorEventArgs e)
        {
            int id = ((tbTaiLieu)tbTaiLieuBindingSource.Current).IdTaiLieu;
            if (gridView19.FocusedColumn.Name == "colTenTaiLieu")
            {
                this.tbTaiLieuBindingSource.EndEdit();
                if (e.Value.ToString() == "" || KiemTraTrungLap(e.Value.ToString(), id) == TrungNoiDung.Trung)
                {
                    if (id == 0)
                    {
                        tbTaiLieuBindingSource.RemoveCurrent();
                        tbTaiLieuBindingSource.EndEdit();
                    }
                    e.Valid = false;
                }
            }
        }
/////////////////////////////////////////////////////////
private void gridView19_InvalidValueException(object sender, InvalidValueExceptionEventArgs e)
        {
                gridView19.SetColumnError(gridView19.FocusedColumn, "Không được để trống ô này hoặc tên vừa nhập đã tồn tại. Vui lòng nhập tên khác!!", ErrorType.Critical);
                e.ExceptionMode = ExceptionMode.NoAction;
                e.WindowCaption = "Thông báo!";
                e.ErrorText = "Không được để trống ô này!\n\rHoặc tên này đã tồn tại.\n\rVui lòng nhập tên khác!";
                // Destroying the editor and discarding the changes made within the edited cell
                gridView19.HideEditor();
        }

Thứ Ba, 4 tháng 8, 2015

GridLookupEdit Get Select Value

vb.IdNguoiThucHien = (int)cbbThucHien.Properties.View.GetFocusedRowCellValue("IdNguoiDung");

Chủ Nhật, 26 tháng 7, 2015

TreeNode Selected BackColor while TreeView not focused

  1. Set the TreeView.DrawMode to TreeViewDrawMode.OwnerDrawText:
    treeView.DrawMode = TreeViewDrawMode.OwnerDrawText;
  2. Set the Treview.HideSelection to false, so that the node states will be kept as selected:
    treeView.HideSelection= false;
  3. Add DrawNode event handler to draw the background using SystemColors.Highlight color:
    private void treeView_DrawNode(object sender, DrawTreeNodeEventArgs e)
    {
      if (e.Node == null) return;
    
      // if treeview's HideSelection property is "True", 
      // this will always returns "False" on unfocused treeview
      var selected = (e.State & TreeNodeStates.Selected) == TreeNodeStates.Selected;
      var unfocused = !e.Node.TreeView.Focused;
    
      // we need to do owner drawing only on a selected node
      // and when the treeview is unfocused, else let the OS do it for us
      if (selected && unfocused)
      {
        var font = e.Node.NodeFont ?? e.Node.TreeView.Font;
        e.Graphics.FillRectangle(SystemBrushes.Highlight, e.Bounds);
        TextRenderer.DrawText(e.Graphics, e.Node.Text, font, e.Bounds, SystemColors.HighlightText, TextFormatFlags.GlyphOverhangPadding);
      }
      else
      {
        e.DrawDefault = true;
      }
    }

Thứ Tư, 29 tháng 4, 2015

GridView DoubleClick

private void gridView1_DoubleClick(object sender, EventArgs e)
{
   GridView view = (GridView)sender;
   Point pt = view.GridControl.PointToClient(Control.MousePosition);

   DoRowDoubleClick(view, pt);
}


private static void DoRowDoubleClick(GridView view, Point pt)
{
   GridHitInfo info = view.CalcHitInfo(pt);

   if (info.InRow || info.InRowCell)
   {
       string colCaption = info.Column == null ? "N/A" : info.Column.GetCaption();
       MessageBox.Show(string.Format("DoubleClick on row: {0}, column: {1}.", info.RowHandle, colCaption));

   }
}

Thứ Tư, 22 tháng 4, 2015

Tạo file excel và xuất ra máy in

MemoryStream ms = new MemoryStream();
Workbook workbook = new Workbook(@"TenFile.xlsx");

void TaoFileVaIn(bool xuatBan)
{
      // Lấy sheet mẫu
      Worksheet worksheet = workbook.Worksheets[0];
      worksheet.PageSetup.PaperSize = PaperSizeType.PaperA4;
      worksheet.PageSetup.Orientation = PageOrientationType.Landscape;
      // Chuyển worksheet mẫu về đầu
      worksheet.Move(0);
      // Chỉ định sheet đang hoạt động là sheet đầu tiên
      workbook.Worksheets.ActiveSheetIndex = 0;
      // Không hiển thị đầy đủ lưới
      // worksheet.IsGridlinesVisible = false;
      int stt = 1;
      int sohang = 17;

      string now = "Tháng " + cbbThang.Text + " năm " + cbbNam.Text;
      worksheet.Cells["A8"].Value = now;

      for (int i = 0; i < listBKTH01.Count; i++)
      {
          worksheet.Cells.InsertRow(17);
      }
      //Style cellA = worksheet.Cells["A16"].GetStyle();

      for (int i = 0; i < listBKTH01.Count ;i++ )
      {
          worksheet.Cells["A" + sohang].Value = stt;
          worksheet.Cells["B" + sohang].Value = "GiaTri";
          stt++;
          sohang++;
      }
      worksheet.Cells["C" + sohang].Formula = "=SUM(C17:C" + (sohang - 1) + ")";

      if (xuatBan)
      {
          try
          {
               Aspose.Cells.Rendering.ImageOrPrintOptions options = new Aspose.Cells.Rendering.ImageOrPrintOptions();
               options.PrintingPage = PrintingPageType.Default;
               worksheet.PageSetup.FitToPagesTall = 1;

               //Setting the number of pages to which the width of the worksheet will be spanned
               worksheet.PageSetup.FitToPagesWide = 1;

              //Setting the paper size to A4
              worksheet.PageSetup.PaperSize = PaperSizeType.PaperA4;
              SheetRender sr = new SheetRender(worksheet, options);
                        sr.ToPrinter(Properties.Settings.Default.TenMayIn);
     }
     catch
     {
              ThongBao.BaoLoi("Không tìm thấy máy in đã chỉ định!");
                }
      }
            // Truyền dữ liệu vào luồng excel để hiển thị trên form excel
            else
            {
                workbook.Save(ms, SaveFormat.Xlsx);
            }
        }

private void btnXemDuLieu_Click(object sender, EventArgs e)
{
            TaoFileVaIn(false);
            frmXemTruoc f = new frmXemTruoc(ms);
            f.Show();
}

Đọc dữ liệu từ file Excel

// Chọn file Excel
     OpenFileDialog f = new OpenFileDialog();
     f.Filter = "Excel files (*.xlsx)|*.xlsx|All files (*.*)|*.*";
     f.FilterIndex = 1;
     f.RestoreDirectory = true;
     if (f.ShowDialog() == DialogResult.OK)
     {
          SplashScreenManager.ShowForm(typeof(frmLoading));
          FileInfo newFile = new FileInfo(f.FileName);
          Workbook workbook = new Workbook(f.FileName);
          Worksheet wordsheet = workbook.Worksheets[0];
          workbook.Worksheets.ActiveSheetIndex = 0;

          for (int i = 18; i <= wordsheet.Cells.Rows.Count; i++)
          {
                    
              if (wordsheet.Cells["B"i].Value.ToString().ToUpper() == "TỔNG CỘNG:")
              {
                   break;
              }
              string d = wordsheet.Cells["D"+i].Value.ToString();
                   
           }
     }

Checkbox trên GridControl Devexpress

1. Thêm một cột trên girdview.
UnboundType = Boolean
2. Thêm sự kiện CustomUnboundColumnData trên gridView
3. Code như sau:
Khai báo biến:
 ArrayList chon = new ArrayList();

Sự kiện FormLoad:
 private void frm_Load(object sender, EventArgs e)
 {
            for (int i = 0; i < BindingSource.Count; i++)
            {
                chon.Add(false);
            }      
 }

Sự kiện CustomUnboundColumnData
private void gridView1_CustomUnboundColumnData(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgs e)
{
            try
            {
                if (e.Column == colChon)
                {
                    if (e.IsGetData)
                    {
                        e.Value = chon[e.ListSourceRowIndex];
                    }
                    else
                    {
                        chon[e.ListSourceRowIndex] = e.Value;
                    }
                 }
            }
            catch(Exception)
            {
            }
}

Sử dụng:
 for (int i = 0; i < BindingSource.Count; i++)
 {
          if (Convert.ToBoolean(chon[i]))
          {
                    // Thủ tục;
          }
}