- [SQLSERVER] Loại bỏ Restricted User trên database MSSQL
- [C#] Hướng dẫn tạo mã QRcode Style trên winform
- [C#] Hướng dẫn sử dụng temp mail service api trên winform
- [C#] Hướng dẫn tạo mã thanh toán VietQR Pay không sử dụng API trên winform
- [C#] Hướng Dẫn Tạo Windows Service Đơn Giản Bằng Topshelf
- [C#] Chia sẻ source code đọc dữ liệu từ Google Sheet trên winform
- [C#] Chia sẻ source code tạo mã QR MOMO đa năng Winform
- [C#] Chia sẻ source code phần mềm lên lịch tự động chạy ứng dụng Scheduler Task Winform
- [Phần mềm] Tải và cài đặt phần mềm Sublime Text 4180 full version
- [C#] Hướng dẫn download file từ Minio Server Winform
- [C#] Hướng dẫn đăng nhập zalo login sử dụng API v4 trên winform
- [SOFTWARE] Phần mềm gởi tin nhắn Zalo Marketing Pro giá rẻ mềm nhất thị trường
- [C#] Việt hóa Text Button trên MessageBox Dialog Winform
- [DEVEXPRESS] Chia sẻ code các tạo report in nhiều hóa đơn trên XtraReport C#
- [POWER AUTOMATE] Hướng dẫn gởi tin nhắn zalo từ file Excel - No code
- [C#] Chia sẻ code lock và unlock user trong domain Window
- [DEVEXPRESS] Vẽ Biểu Đồ Stock Chứng Khoán - Công Cụ Thiết Yếu Cho Nhà Đầu Tư trên Winform
- [C#] Hướng dẫn bảo mật ứng dụng 2FA (Multi-factor Authentication) trên Winform
- [C#] Hướng dẫn convert HTML code sang PDF File trên NetCore 7 Winform
- [C#] Hướng dẫn viết ứng dụng chat với Gemini AI Google Winform
Thay đổi màu nền của ô trong GridControl Devexpress bằng C#
Hôm nay mình xin giới thiệu đến các bạn cách để thay đổi màu nền của ô (Cell Backcolor Appearance) theo giá trị của một ô khác trên cùng lưới của bộ công cụ DevExpress sử dụng ngôn ngữ C#.
Ví dụ: trong danh mục nhân viên, khi mình chọn lọc ra những bạn nam. Hệ thống sẽ kiểm tra cột giới tính của lưới và tô màu những ô trong cột tên những người có giới tính là Nam. Với Grid Designer - Appearance, DevExpress cũng cho phép người dùng thiết kế sẵn các Rules được gán cố định cho các cột, khi load dữ liệu vào grid thì các rules này sẽ quy định màu sắc, icon, định dạng, v.v...
Dựa vào điều kiện mà người dùng thiết lập. Tuy nhiên những thiết lập này sẽ không thể được tùy biến sau khi build ứng dụng. Do đó hôm nay mình sẽ làm một ví dụ về thực hiện thay đổi màu sắc của các ô trên lưới khi mình thay đổi giá trị của combobox. Thiết kế form như hình: Bao gồm combobox dùng để tùy biến giá trị so sánh, và một GridControl.
Combobox mình vừa thêm vào thực chất là một LookupEdit, gán vào trong BarEditItem của barManager, do đó việc tải dữ liệu vào và lấy kết quả của combobox nó hơi khác với một LookupEdit trên form. Các bạn tham khảo source code để hiểu rõ hơn.
Tiếp tục thực hiện load dữ liệu vào combobox cũng như gridcontrol bằng các thủ tục, sau đó gọi chúng trong sự kiện form_load:
//create datasource for cbo
private void load_cbo_gioitinh()
{
DataTable dt = new DataTable("tbl_gioitinh");
DataColumn column;
DataRow row;
column = new DataColumn();
column.DataType = System.Type.GetType("System.Int32");
column.ColumnName = "id";
dt.Columns.Add(column);
column = new DataColumn();
column.DataType = System.Type.GetType("System.String");
column.ColumnName = "gioitinh";
dt.Columns.Add(column);
//dt.Columns.Add(column);
row = dt.NewRow();
row["id"] = 0;
row["gioitinh"] = "Nam";
dt.Rows.Add(row);
row = dt.NewRow();
row["id"] = 1;
row["gioitinh"] = "Nữ";
dt.Rows.Add(row);
row = dt.NewRow();
row["id"] = 2;
row["gioitinh"] = "Không xác định";
dt.Rows.Add(row);
cbo_gioitinh.DataSource = dt;
cbo_gioitinh.DisplayMember = "gioitinh";
cbo_gioitinh.ValueMember = "id";
}
//create datasource for gridcontrols
private void load_data_grid()
{
DataTable dt;
DataColumn col;
DataRow row;
dt = new DataTable("nhanvien");
//add column
col = new DataColumn();
col.DataType = System.Type.GetType("System.String");
col.ColumnName = "hoten";
dt.Columns.Add(col);
col = new DataColumn();
col.DataType = System.Type.GetType("System.DateTime");
col.ColumnName = "ngaysinh";
dt.Columns.Add(col);
col = new DataColumn();
col.DataType = System.Type.GetType("System.String");
col.ColumnName = "gioitinh";
dt.Columns.Add(col);
col = new DataColumn();
col.DataType = System.Type.GetType("System.String");
col.ColumnName = "diachi";
dt.Columns.Add(col);
col = new DataColumn();
col.DataType = System.Type.GetType("System.String");
col.ColumnName = "noilamviec";
dt.Columns.Add(col);
//add row
row = dt.NewRow();
row["hoten"] = "Nguyễn TONA";
row["ngaysinh"] = "01/01/1991";
row["gioitinh"] = "Không Xác Ðịnh";
row["diachi"] = "Thủ Ðức";
row["noilamviec"] = "LaptrinhVB.Net";
dt.Rows.Add(row);
row = dt.NewRow();
row["hoten"] = "Thảo Meo";
row["ngaysinh"] = "01/01/1989";
row["gioitinh"] = "Nam";
row["diachi"] = "Thủ Ðức";
row["noilamviec"] = "LaptrinhVB.Net";
dt.Rows.Add(row);
row = dt.NewRow();
row["hoten"] = "Hoàng Tử Nhỏ";
row["ngaysinh"] = "01/01/1987";
row["gioitinh"] = "Nam";
row["diachi"] = "Gò Vấp";
row["noilamviec"] = "LaptrinhVB.Net";
dt.Rows.Add(row);
row = dt.NewRow();
row["hoten"] = "Gấu Nghiêm Túc";
row["ngaysinh"] = "01/01/1994";
row["gioitinh"] = "Nữ";
row["diachi"] = "Bình Thịnh";
row["noilamviec"] = "LaptrinhVB.Net";
dt.Rows.Add(row);
dgv_chitiet.DataSource = dt;
}
//Gọi các thủ tục
private void Form1_Load(object sender, EventArgs e)
{
load_cbo_gioitinh();
load_data_grid();
}
Trong danh mục sự kiện của gridView1 chọn sự kiện RowCellStyle sau đó thực hiện code như sau:
private void gridView1_RowCellStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e)
{
if (btn_cbo_gioitinh.EditValue != null && e.RowHandle >= 0) //tránh trường hợp cbo chưa có gì nó báo lỗi null
{
if (e.Column.Name == "col_hoten") // chỉ xử lý trong cột họ tên thôi
{
string gt = btn_cbo_gioitinh.EditValue.ToString(); //lấy giá trị của cbo giới tính trên barmanager
switch (gt)
{
case "0":
{
String celVL = gridView1.GetRowCellValue(e.RowHandle, "gioitinh").ToString(); // lấy giá trị 1 ô trong dòng đang dc focus
if (celVL == "Nam") e.Appearance.BackColor = Color.FromArgb(255, 224, 192); //chỉnh màu ô hiện tại
}
break;
case "1":
{
String celVL = gridView1.GetRowCellValue(e.RowHandle, "gioitinh").ToString();
if (celVL == "Nữ")
{
e.Appearance.BackColor = Color.FromArgb(255, 224, 192);
}
}
break;
case "2":
{
String celVL = gridView1.GetRowCellValue(e.RowHandle, "gioitinh").ToString();
if (celVL == "Không Xác Định")
{
e.Appearance.BackColor = Color.FromArgb(255, 224, 192);
}
}
break;
}
}
}
}
Như vậy là hoàn tất. Nhấn F5 và thay đổi combobox để xem kết quả.
Demo:
FullSource code.
Chúc các bạn thành công !
Mọi ý kiến đóng góp về bài viết vui lòng để lại trong phần bình luận.