I. Các điều khiển hiển thị dữ liệu
I.7. Hiển thị dữ liệu ra điều khiển
Để hiển thị dữ liệu lên màn hình, chúng ta cĩ thể xuất dữ liệu của lớp xử lý ra các điều khiển cần hiển thị và khi cần cập nhật vào lớp xử lý lại thực hiện gán trị trên các điều khiển vào các cột tương ứng. Phần dưới đây giới thiệu một số đối tượng liên quan đến việc đồng bộ dữ liệu trên màn hình
I.7.1. Dịng hiện hành
Như đã đề cập trong phần ADO.Net, dữ liệu trên DataTable hoặc trên DataView khơng cĩ dịng hiện hành như trong Recordset và tại mỗi thời điểm, cĩ thể làm việc với bất kỳ dịng dữ liệu nào. Ngược lại khi dữ liệu hiển thị trên màn hình, khái niệm hiện hành được đưa ra nhằm đồng bộ dữ liệu trên các
điều khiển cùng hiển thị thơng tin của một nguồn dữ liệu.
Dưới đây giới thiệu các lớp đối tượng quản lý dữ liệu trên màn hình
I.7.2. BindingManagerBase
BindingManagerBase là đối tượng quản lý và cho phép đồng bộ dữ liệu các điều khiển trên màn hình cùng liên kết đến cùng một đối tượng nguồn. Đây là một lớp trừu tượng. BindingManagerBase thuộc khơng gian tên System.Windows.Forms.BindingManagerBase gồm hai lớp:
System.Windows.Forms.CurrencyManager
System.Windows.Forms.PropertyManager
CurrencyManager thực hiện việc đồng bộ bằng cách duy trì một con trỏ đến dịng hiện hành trên danh sách. Các điều khiển liên kết đến dịng hiện hành sẽ hiển thị thơng tin của cùng một dịng.
PropertyManager được dùng để duy trì thuộc tính hiện hành của đối tượng, đúng hơn là thuộc tính của
đối tượng hiện hành trên danh sách.
Cách tạo thường dùng nhất là từ đối tượng BindingContext của Form như sau:
Cú pháp: Khởi tạo một DataGridColumnStyle Dim bm As BindingManagerBase = _ <form>.BindingContext(<nguồn dữ liệu>) Hoặc: Dim bm As BindingManagerBase = _ <form>.BindingContext(<nguồn dữ liệu>, <thành phần>)
Nếu nguồn dữ liệu là đối tượng chỉ trả về một thuộc tính, BindingContext sẽ trả về một ProtertyManager. Ví dụ liên kết Text của Label với Text của Textbox.
Nếu nguồn dữ liệu là đối tượng chứa một danh sách, BindingContext sẽ trả về một CurrencyManager. Ví dụ nguồn là DataSet, DataTable, DataView... một CurrencyManager được trả về.
Các thuộc tính cần lưu ý của BindingManagerBase
Các thuộc tính cần chú ý của BindingManagerBase
Tên Mơ tả
Count Số dịng trên danh sách do BindingManagerBase quản lý
Current Trả vềđối tượng hiện hành (chỉ cĩ tác dụng với CurrencyManager) Position Vị trí của đối tượng hiện hành trên danh sách (đọc ghi, chỉ cĩ tác dụng
với CurrencyManager).
Các phương thức cần chú ý của BindingManagerBase
Tên Mơ tả
AddNew() Thêm dịng mới trên danh sách do BindingManagerBase quản lý. (như
AddNew của DataView). Dịng mới thêm được chuyển thành đối tượng hiện hành (Current) trên BindingManagerBase
EndCurrentEdit() Chấm dứt chỉnh sửa trên đối tượng hiện hành và nếu là dịng mới sẽ được đưa vào tập hợp Rows của DataTable (chỉ cĩ tác dụng với CurrencyManager)
CancelCurrentEdit() Bỏ qua các thay đổi của đối tượng hiện hành.
Các sự kiện của BindingManagerBase
Tên Mơ tả
CurrentChanged Sự kiện xảy ra khi đối tượng hiện hành thay đổi
PositionChanged Sự kiện xảy ra khi vị trí hiện hành của BindingManagerBase thay đổi
I.7.3. BindingContext
Phát sinh từ lớp đối tượng System.Windows.Forms.BindingContext, BindingContext là đối tượng quản lý các BindingManagerBase. Các đối tượng kế thừa từ lớp Control đều cĩ thể cĩ BindingContext. Tuy nhiên, chỉ cĩ Form và các điều khiển chứa các điều khiển khác như Groupbox, TabControl, Panel mới cĩ thể tạo một BindingContext để quản lý các BindingManagerBase hiển thị dữ liệu của các điều khiển chứa trong nĩ.
Tuy cùng liên kết với một nguồn dữ liệu (cách tham chiếu hồn tồn giống nhau), nhưng hai BindingContext sẽ phát sinh hai BindingManagerBase khác nhau và khơng đồng bộ dữ liệu với nhau.
I.7.4. Các thủ tục nhập xuất dữ liệu trên màn hình
Để hiển thị dữ liệu trên màn hình, chúng ta sử dụng các điều khiển đã đề cập ở trên thơng qua thuộc tính liên kết dữ liệu và thường cĩ các thủ tục nhập xuất sau:
Thủ tục Xuat_ho_so_<ten_bang>: xuất các trị của dịng đang làm việc ra các điều khiển trên màn hình
Thủ tục Xuat_ho_so_<ten_bang>_moi: xuất các trị mặc định ra các điều khiển trên màn hình
để chuẩn bị tiếp nhận thơng tin của dịng mới
Thủ tục Nhap_ho_so_<ten_bang>: nhập trị của các điều khiển trên màn hình vào các cột tương
ứng trên dịng đang làm việc.
Thủ tục Xuat_danh_sach_chon_<ten_bang>: sử dụng khi cấp nguồn liệt kê cho các điều khiển ComboBox, ListBox, ListCheckBox
Thủ tục Xuat_luoi_<ten_bang>: sử dụng khi xuất dữ liệu của bảng ra lưới (DataGrid)