CSharp (C#)

[GridDevExpress] Demo GridControl của DevExpress 14.2 (phần 2)

Tiếp tục phần 2 sẽ chỉ các bạn sử dụng GridControl 1 cách hiệu quả hơn để chọn các trường dữ liệu được hiển thịlọc dữ liệu hay tìm kiếm nhanh, sắp xếp.

Mình thiết kế lại form kéo thả 1 splitContainerControl vào để bên phải là Grid bên trái là 1 Panel để tý nữa mình sẽ tạo ra danh sách các CheckBox cho phép bạn check vào ô nào thì ẩn đi trường dữ liệu của cột tương ứng.

Thiết kế này tuy là có thể kiểm soát được trường mình muốn lấy ra nhưng nó phụ thuộc vào các bảng trong CSDL nếu sau này CSDL thêm 1 cột thì ta cũng phải thêm 1 cột mới ở ngoài chương trình hay CSDL thay đổi tên cột ta cũng phải đổi theo!

OK bây giờ các bạn chọn Grid vào chọn runDesign


Thiết kế lại Gird
Thiết kế lại Gird

Các bạn chú ý ở đây mình sẽ chỉnh sửa cho dạng gridView của grid trước.

Main các bạn quan tâm đến Views, ColumnsLayout các thuộc tính này cũng như GridViewData của windownform không khác gì mấy có được 2 tính năng đặc biệt là tìm kiếm (Find) và lọc dữ liệu nhanh (Filter).

View các bạn kéo xuống tìm thuộc tính OptionsFind 2 tính năng:

AlwaysVisible = True (luôn hiển thị công cụ tìm kiếm)

SearchInPreview = True (cho phép xem trong lúc tìm kiếm trường hợp quá nhiều dữ liệu thì nó tìm được đến đâu show đến đó)

ở thuộc tính FindNullPrompt các bạn nhập câu thông báo tìm kiếm mà bạn cho là hợp lý VD: Nhập vào thông tin bạn muốn tìm kiếm …

Thiết kế View của gridView của Grid
Thiết kế View của gridView của Grid

Xong sang Columns ở đây sẽ thiết kế lại tên các cột tiêu đề của Bảng NhanVien trong vd này của mình

Ở đây trong bảng NhanVien mình co 9 trường dữ liệu nên sẽ tạo ra 9 cột

Các bạn chọn nút AddColumns

Và thiết lập thuộc tính cho từng cột làm kiểu này lâu hic có 1 cách khác là khi viết câu Select sửa tên tiêu đề thành tiếng Việt và sắp xếp cột nào đứng trước đứng sau luôn cũng được!

Ở đây mình lấy VD cột Ngày sinh để có định dạng ngày tháng năm

Thuộc tính Name cái này dân code thì ai mà không biết (khuyên các bạn nên đặt tên cho nó sau này dễ quản lý)

Thuộc tính Caption như thuộc tính Text của các Control nếu bạn là dan code ở đây nó là tiêu đề cho cột.

Thuộc tính này quan trọng nà FileName để biết nó lưu trường nào của bảng Nhanvien bạn phải ghi đúng theo tên cột trong bảng Nhanvien nếu sai sẽ không lấy được dữ liệu.

Thuộc tính DisplayFormat định dạng hiển thị kiểu dữ liệu muốn lấy ra ở đây có 2 thuộc tính:

FormatString là định dạng dữ liệu xuất ra kiểu như email, số đt, định dạng ngày tháng năm,…

FormatType là kiểu dữ liệu lấy ra thuộc dạng nào như integer, money, datetime,…

Thiết kế column cho dạng gridView của Grid
Thiết kế column cho dạng gridView của Grid

OK vậy là xong phần gridView các bạn nhấn F5 và chạy thử

kết quả dạng gridView của Gird
kết quả dạng gridView của Gird

Bây giờ sẽ qua phần tinh chỉnh cho layoutView cũng tương tự  như gridView các bạn cũng chỉnh phần ViewColumns tương tụ như của gridView ở đây thì mình chỉnh sửa thêm phần Layout nữa.

Cũng chẳng có gì nhiều cá bạn kéo thả các trường dữ liệu sắp xếp theo ý mình và muốn ẩn trường nào đi thì nhấn chuột phải vào nó chọn Hiden Item là nó sẽ bị ẩn đi hay Hiden Text để ẩn tiêu đề và các bạn cũng có thể để 2 trường dữ liệu trên 1 hàng thiết kế xong các bạn nhấn sang Tab ViewLayout xem ưng ý chưa rồi thì các bạn nhấn Apply là xong!

thiết kế Layout cho kiểu layout của gird
thiết kế Layout cho kiểu layoutView của gird

Và nhấn F5 và xem kết quả

kết quả layoutView của Grid
kết quả layoutView của Grid

Tiếp theo mình sẽ tạo ra các check box để cho các bạn tùy chỉnh trường dữ liệu nào muốn hiển thị ra ở đây mình tao ra các checkbox động (tạo bằng code không design) vì code này có thể dùng cho nhiều bảng khác không phụ thuộc vào 1 bảng nào cả.

Code:

Panel pal = new Panel();

Label lbl = new Label { Text = “Check vào trường \n bạn muốn ẩn đi” };

CheckBox chkb = new CheckBox();

public void taoviewcot()

{

lbl.AutoSize = true;

lbl.Dock = DockStyle.Top;

palCotHienThi.Controls.Add(lbl);

palCotHienThi.Controls.Remove(pal);

for (int i = 0; i < gridView.Columns.Count; i++)

{

chkb = new CheckBox { Name = gridView.Columns[i].FieldName, Text = gridView.Columns[i].Caption };

chkb.CheckedChanged += chkb_CheckedChanged;

chkb.Top = chkb.Height * i + 50;

pal.Controls.Add(chkb);

}

pal.Dock = DockStyle.Fill;

palCotHienThi.Controls.Add(pal);

}

void chkb_CheckedChanged(object sender, EventArgs e)

{

CheckBox chk = (CheckBox)sender;

if (chk.Checked)

{

gridView.Columns.ColumnByFieldName(chk.Name).Visible = false;

layoutView.Columns.ColumnByFieldName(chk.Name).Visible = false;

}

else

{

gridView.Columns.ColumnByFieldName(chk.Name).Visible = true;

layoutView.Columns.ColumnByFieldName(chk.Name).Visible = true;

}

}

Gọi hàm taoviewcot() trong FormLoad() và nhấn F5 xem kết quả

ẩn các cột dạng gridView
ẩn các cột dạng gridView
ẩn các cột dạng layout của Grid
ẩn các cột dạng layout của Grid

Bây giờ mình sẽ giới thiệu các bạn chức năng tìm kiếm của Grid (ở đây nó tìm nhanh và gần đúng (tìm kiếm tương đối cái này code còn khó hơn cả cái tìm kiếm tuyệt đối) cái này rất có lợi các bạn có thể viết thêm 1 nút tìm kiếm nâng cao tìm thông tin chính xác):

ketquatimkiemlayout
kết quả tìm kiếm dạng layout
ketquatimkiemdanggird
kết quả tìm kiếm dạng grid

Và chức năng Filter chức năng này rất hay và các bạn làm kế toán hay văn phòng thì chắc hay dùng mấy cái này trong Excel và Assess.

Tất cả các cột (ở dạng gridView hay layoutView ) các bạn đều có thể lọc dữ liệu (các bạn cũng có thể tắt chắc năng lọc dữ liệu của cột đó khi thiết kế) các bạn click vô tiêu để chọn biểu tượng Filter  lọc dữ liệu:

chức năng lọc dữ liệu
chức năng lọc dữ liệu
kết quả lọc dữ liệu các nhân viên có chức vụ là nhân viên
kết quả lọc dữ liệu các nhân viên có chức vụ là nhân viên

Và ở lọc ở dạng Custom dạng này đòi hỏi người dùng phải hiểu biết chút thì lọc mới có kết quả khi click chọn dạng Custom này thi hộp thoại lọc dạng Custom xuất hiện để bạn nhập vào công thức so sánh lọc (dấu _ đại diện cho 1 ký tự và dấu % là nhiều ký tự):

lọc dữ liệu có điều kiện do người dùng chọn
lọc dữ liệu có điều kiện do người dùng chọn

Ở đây mình sẽ VD thao tác đúng do dữ liệu ít nên thôi mình sẽ đưa ra điều kiện để nó tìm ai được là nhân viên luôn mặc dù muốn lọc nhân viên đã có thể lọc trực tiếp trên tiêu đề:

lọc dữ liệu kiểu filter có kết quả
lọc dữ liệu kiểu custom có kết quả
kết quả lọc Custom ở dạng layout
kết quả lọc Custom ở dạng layout

mình sẽ đưa ra một điều kiện sai nên lọc không ra kết quả

lọc custom sai không có kết quả
lọc custom sai không có kết quả

kết quả là:

kết quả lọc trên gridView rỗng
kết quả lọc trên gridView rỗng

Ở đây 2 chỗ mình khoanh đỏ là các bạn làm cho dữ liệu hiện trở lại bằng cách click  bỏ dấu check vào của checkbox ở vùng mình khoanh đỏ bên trái (Hay các bạn cũng có thể chọn lại tiêu đề cột mình đang lọc chon All để xuất hiện lại dữ liệu!). Còn nút EditFilter cho phép bạn sửa lại biểu thức lọc (và lọc trên nhiều trường) mà mấy cái filter này ai hay làm Excel với Asscess thì họ sẽ biết các nhập công thức lọc cho đúng!

Và chức năng sắp xếp khi các bạn nhấn vào tiêu đề cột nha!

Link tải Demo Hoàn thành:

Đã up xong công nhận Dev nặng thật mấy cái dll mà project lên 13M

Chúc các bạn thành công và vui vẻ !

Bình luận về bài viết này