Một số kỹ thuật trong hiển thị dữ liệu

Một phần của tài liệu hướng dẫn sử dụng visual basic (Trang 161 - 167)

VI.1. To lp DataGridColumnStyle chuyn đổi d liu hin th

Trên lưới, cĩ những trường hợp cần cột hiển thị dữ liệu khác với dữ liệu lưu trữ như cột MÃ hiển thị

TÊN. Chúng ta cĩ thể thực hiện thơng qua việc tạo một kiểu DataGridColumnStyle mới đáp ứng nhu cầu này kế thừa từ DataGridTextBoxColumn.

DataGridTextBoxColumn kế thừa từ DataGridColumnStyle và cĩ một DataGridTextBox (phát sinh từ lớp TextBox). Điều khiển TextBox được đưa vào tập hợp Controls của DataGrid. Mỗi lần người dùng bắt

đầu soạn thảo trên ơ của cột cĩ kiểu DataGridTextBoxColumn, DataGridTextBox được di chuyển đến vị

trí soạn thảo và người dùng chỉnh sửa trên chính DataGridTextBox. Giá trị hiển thị trên lưới và cập nhật vào bảng thơng qua hai phương thức GetColumnValueAtRow, SetColumnValueAtRow.

Cách giải quyết :

ƒ Để cĩ giá trị hiển thị cho cột, chúng ta sử dụng một tập hợp (Collection) chứa tất cả những giá trị cần hiển thị tương ứng.

ƒ Giá trịđưa vào tập hợp thuộc một Class với hai thuộc tính đọc ghi chứa giá trị hiển thị và giá trị

lưu trữ do chúng ta xây dựng.

ƒ Lớp DataGridColumnStyle được tạo sẽ cĩ tập hợp (collection) các đối tượng của lớp vừa tạo ở

trên lấy giá trị do người dùng cung cấp thơng qua các phương thức thêm xĩa của collection.

ƒ Trong hàm GetColumnValueAtRow, chúng ta tìm và trả về giá trị hiển thị tương ứng trong tập hợp. Loại cột này dùng để hiển thị thơng tin, khơng cho cập nhật nên chúng ta sẽ khơng sử

dụng thủ tục SetColumnValueAtRow.

VI.2. To lp DataGridColumnStyle cĩ ComboBox

Loại này cĩ một ComboBox chứa danh sách liệt kê để người dùng chọn lựa. Ngồi ra đây cũng là cột cĩ thể cĩ nhu cầu hiển thị khác nội dung lưu trữ nên chúng ta kế thừa từ lớp TranslateColumn ở trên. Các yêu cầu cho loại cột này là:

ƒ Đưa vào một ComboBox

ƒ Xử lý cập nhật khi giá trị trên cột thay đổi qua ComboBox Cách thực hiện:

ƒ Khai báo một ComboBox mới và đưa vào tập hợp Controls của lớp và diều khiển này sẽẩn hiện theo TextBox của cột và sẽ di chuyển đến vùng hiện hành của lưới.

ƒ DisplayMember, ValueMember và DataSource của ComboBox sẽ được gán thơng qua một phương thức.

ƒ Để cập nhật dữ liệu cho lưới, chúng ta gán SelectedValue của ComboBox sau khi chọn thơng qua phương thức SetColumnAtRowValue

Xin xem thêm giáo trình.

VI.3. To lp DataGridColumnStyle cho phép định dng chi tiết

Với lớp DataGridTextBoxColumn, chúng ta khơng thể định dạng riêng cho một ơ. Vì vậy, cần xây dựng một lớp cĩ thể cho phép định dạng riêng biệt qua việc tạo một kiểu DataGridColumnStyle mới kế thừa từ DataGridTextBoxColumn (xem thêm trong giáo trình)

VI.4. Minh ha s dng VI.4.1. Lớp TranslateColumn

Chúng ta thiết kế lưới hiển thị các diễn viên sử dụng lớp TranslateColumn hiển thị dữ liệu cột Phai trên bảng

– Khai báo cột TranslateColumn khi thiết kế:

ƒ Định cột Phai kiểu DataGridTextBoxColumn (giả sửđược đặt tên là cotPhai) với MappingName là "Phai"

ƒ Sau đĩ chuyển sang cửa sổ Code, vùng Windows Form Designer generated code, tìm và sửa kiểu của cột này từ DataGridTextBoxColumn -> TranslateColumn

ƒ Viết thủ tục cấp nguồn hiển thị cho cotPhai và gọi trong sự kiện Form_Load

Ví dụ: (adsbygoogle = window.adsbygoogle || []).push({});

Private Sub Nguon_hien_thi()

' Tri là lớp đã xây dựng (xem giáo trình) cotPhai.Tap_hop.Add(New Tri(False, "Nữ"))

cotPhai.Tap_hop.Add(New Tri(True, "Nam")) End Sub

– Thiết kế lưới bằng lệnh:

Ví dụ: Lưới cĩ tên LUOI_DIEN_VIEN

Private Sub Thiet_ke_luoi_dien_vien()

Dim kieu_the_hien As New DataGridTableStyle kieu_the_hien.MappingName = "DIEN_VIEN"

Dim cotHo_ten_DV As New DataGridTextBoxColumn ' các lệnh thiết kế cột ...

Dim cotPhai As New TranslateColumn cotPhai.HeaderText = "Phái"

cotPhai.MappingName = "Phai" cotPhai.NullText = ""

cotPhai.Width = 60

cotPhai.Tap_hop.Add(New Tri(False, "Nữ")) cotPhai.Tap_hop.Add(New Tri(True, "Nam")) Dim cotNgay_sinh As New DataGridTextBoxColumn ' các lệnh thiết kế cột ...

Dim cotDia_chi As New DataGridTextBoxColumn ' các lệnh thiết kế cột ...

kieu_the_hien.GridColumnStyles.AddRange(New DataGridColumnStyle() _

{cotHo_ten_DV, cotPhai, cotNgay_sinh, cotDia_chi})

LUOI_DIEN_VIEN.TableStyles.Add(kieu_the_hien) End Sub

Sau đĩ, gọi thực hiện Thiet_ke_luoi_dien_vien trong sự kiện Form_Load

VI.4.2. Lớp ComboBoxColumn

Với yêu cầu thiết kế màn hình như hình bên

– Khai báo cột ComboBoxColumn khi thiết kế

ƒ Định cột Diễn viên kiểu DataGridTextBoxColumn (giả

sử được đặt tên là cotMDV) với MappingName là "MDV"

ƒ Sau đĩ chuyển sang cửa sổ Code, vùng Windows Form Designer generated code, tìm và sửa kiểu của cột này từ DataGridTextBoxColumn -> ComboBoxColumn

ƒ Trong sự kiện Form_Load, sau khi cĩ dữ liệu của DIEN_VIEN (qua biến bang_dien_vien của lớp XL_DIEN_VIEN), gọi phương thức Cap_nguon_hien_thi_liet_ke

Ví dụ:

bang_dien_vien =New XL_DIEN_VIEN

cotMDV.Cap_nguon_hien_thi_liet_ke(bang_dien_vien, "MDV", "Ho_ten_DV") – Thiết kế lưới bằng lệnh

Ví dụ: Lưới cĩ tên LUOI_THAM_GIA

Private Sub Thiet_ke_luoi_tham_gia()

Dim kieu_the_hien As New DataGridTableStyle kieu_the_hien.MappingName = "THAM_GIA" (adsbygoogle = window.adsbygoogle || []).push({});

Dim cotMDV As New ComboBoxColumn cotMDV.HeaderText = "Diễn viên" cotMDV.MappingName = "MDV" cotMDV.NullText = "" cotMDV.Width = 190

cotMDV.Cap_nguon_hien_thi_liet_ke (bang_dien_vien, "MDV", "Ho_ten_DV") kieu_the_hien.GridColumnStyles.Add(cotMDV)

LUOI_THAM_GIA.TableStyles.Add(kieu_the_hien) End Sub

Sau đĩ, gọi thực hiện Thiet_ke_luoi_tham_gia trong sự kiện Form_Load

VI.4.3. Lớp ColoredColumn

Với yêu cầu thiết kế lưới hiển thị vở kịch như sau:

ƒ Tạo thêm cột số diễn viên tham gia vở kịch

ƒ Nếu số diễn viên tham gia vượt quá trị nào đĩ, sẽ đổi màu chữ, màu nền, hiệu ứng của font chữ, canh lề nội dung: canh phải, tiêu đề: canh trái

– Khai báo cột ColoredColumn khi thiết kế:

ƒ Định cột Số diễn viên tham gia kiểu DataGridTextBoxColumn (giả sử được đặt tên là cotSo_dv) với MappingName là "So_dv"

ƒ Chuyển sang cửa sổ Code, vùng Windows Form Designer generated code, tìm và sửa kiểu của cột này từ DataGridTextBoxColumn -> ColoredColumn. Sau đĩ định lại thuộc tính Canh_le_noi_dung trên cửa sổ Properties là Far

ƒ Xử lý sự kiện Phat_sinh_bien_co_ve_o như sau:

Ví dụ:

Private Sub cotSo_dv_Phat_sinh_bien_co_ve_o (ByRef e As _

If CInt(e.Gia_tri) > 3 Then

e.Font_Chu = New Font(LUOI_VO_KICH.Font, FontStyle.Italic) e.Mau_nen = Brushes.Cyan

e.Mau_chu = Brushes.Blue End If

Bài 9

BÁO BIU CRYSTAL REPORT

Tĩm tắt

Lý thuyết 6 tiết - Thực hành 10 tiết

Mục tiêu Các mục chính Bài tập

Bài học này giúp cho học viên cách thiết kế báo biểu theo mơ hình Pul, Push trong VB.Net.

1. Giới thiệu CrysTal Reportl 2. Tạo báo biểu mơ hình Pull, Push

5.15, 5.16, 5.18, 5.19

Một phần của tài liệu hướng dẫn sử dụng visual basic (Trang 161 - 167)