Giáo trình thực hành Lập trình hướng đối tượng - Bài thực hành số 12.4: Lập trình dùng Databinding để chỉ viết code khởi tạo
Trang 1
MÔN : LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Bài thực hành số 12.4 : Lập trình dùng Databinding ₫ể chỉ viết code khởi tạo
I. Mục tiêu :
Giúp SV làm quen với việc xây dựng ứng dụng dùng kỹ thuật databinding của VC# ₫ể
truy xuất database mà không cần viết code truy xuất database, chỉ cần viết code khởi tạo
nhỏ, nhờ ₫ó hạn chế tối ₫a công sức, thời gian lập trình ₫ồng thời hạn chế tối ₫a những
rủi ro, lỗi của chương trình.
II. Nội dung :
Xây dựng chương trình nhỏ cho phép xem thông tin chi tiết về tình hình mua hàng của
khách hàng dùng kỹ thuật databinding ₫ể chỉ cần viết code khởi tạo nhỏ, chứ không cần
viết code truy xuất database chi tiết.
Form có giao diện như hình vẽ dưới ₫ây.
III. Chuẩn ₫ầu ra :
Sinh viên nắm vững và xây dựng thành thạo các form truy xuất database dùng kỹ thuật
databinding mà không cần viết code truy xuất database, chỉ cần viết code khởi tạo nhỏ.
IV. Qui trình :
Bài thực hành này sẽ viết chương trình có form giao diện sử dụng như sau :
1. Chạy VS .Net, chọn menu File.New.Project ₫ể hiển thị cửa sổ New Project.
2. Mở rộng mục Visual C# trong TreeView "Project Types", chọn mục Windows, chọn icon
"Windows Application" trong listbox "Templates" bên phải, thiết lập thư mục chứa Project
trong listbox "Location", nhập tên Project vào textbox "Name:" (td. SellView), click button OK
₫ể tạo Project theo các thông số ₫ã khai báo.
Trang 2
3. Form ₫ầu tiên của ứng dụng ₫ã hiển thị trong cửa sổ thiết kế, việc thiết kế form là quá trình
lặp 4 thao tác tạo mới/xóa/hiệu chỉnh thuộc tính/tạo hàm xử lý sự kiện cho từng ₫ối tượng
cần dùng trong form.
4. Nếu cửa sổ ToolBox chưa hiển thị chi tiết, chọn menu View.Toolbox ₫ể hiển thị nó (thường
nằm ở bên trái màn hình). Click chuột vào button
(Auto Hide) nằm ở góc trên phải cửa sổ
ToolBox ₫ể chuyển nó về chế ₫ộ hiển thị thường trực. Thay ₫ổi kích thước của form lớn ra
theo yêu cầu.
5. Duyệt tìm phần tử Button (trong nhóm Common Controls), chọn nó, dời chuột về vị trí thích
hợp trong form và vẽ nó với kích thước mong muốn. Hiệu chỉnh thuộc tính Text = "Tới" và
thuộc tính (Name) = btnToi.
6. Lặp lại bước 5 ₫ể vẽ Button thứ 2 với thuộc tính Text = "Lùi" và thuộc tính (Name) = btnLui.
7. Duyệt tìm phần tử Label (trong nhóm Common Controls), chọn nó, dời chuột về vị trí thích
hợp trong form và vẽ nó với kích thước mong muốn. Hiệu chỉnh thuộc tính Text = "Tên khách
hàng :".
8. Lặp lại bước 7 ₫ể vẽ 3 Label còn lại với thuộc tính Text tuần tự là "Địa chỉ liên hệ :", "Số Phone
: ", "Số Fax :"
9. Duyệt tìm phần tử ComboBox (trong nhóm Common Controls), chọn nó, dời chuột về bên
phải Label "Tên khách hàng :" và vẽ nó với kích thước mong muốn. Hiệu chỉnh thuộc tính
(Name) = cbCust.
10. Duyệt tìm phần tử TextBox (trong nhóm Common Controls), chọn nó, dời chuột về vị trí bên
phải Label "Địa chỉ liên hệ :" và vẽ nó với kích thước mong muốn. Hiệu chỉnh thuộc tính
(Name)= txtContact.
11. Lặp lại bước 10 ₫ể vẽ 2 TextBox còn lại với thuộc tính (Name) tuần tự là txtPhoneNo,
txtFaxNo.
12. Duyệt tìm phần tử GroupBox (trong nhóm Common Controls), chọn nó, dời chuột về vị trí
ngay dưới Label "Số Fax :" và vẽ nó với kích thước mong muốn. Hiệu chỉnh thuộc tính Text =
"Danh sách các ₫ơn ₫ặt hàng của khách hàng ₫ang ₫ược chọn :".
13. Duyệt tìm phần tử DataGridView (trong nhóm Data), chọn nó, dời chuột vào trong GroupBox
vừa vẽ và vẽ nó với kích thước mong muốn. Hiệu chỉnh thuộc tính (Name)= grdOrders.
14. Lặp lại bước 12 và 13 ₫ể vẽ GroupBox có thuộc tính Text = "Chi tiết của ₫ơn ₫ặt hàng ₫ang
₫ược chọn :" và DataGridView bên trong có thuộc tính (Name) = grdOrderDetails.
15. Tạo hàm xử lý sự kiện cho 2 button btnToi và btnLui rồi viết code cho chúng như sau :
//hàm xử lý Click chuột trên button "Tới"
private void btnToi_Click(object sender, EventArgs e) {
CurrencyManager cm = (CurrencyManager)this.BindingContext [dsView, "Customers"];
//nếu không phải khách hàng cuối thì tiến tới 1 khách hàng
if (cm.Position < cm.Count - 1) cm.Position++;
}
//hàm xử lý Click chuột trên button"Lùi"
private void btnLui_Click(object sender, EventArgs e) {
//nếu không phải khách hàng ₫ầu tiên thì lùi 1 khách hàng
if (this.BindingContext[dsView, "Customers"].Position > 0)
this.BindingContext[dsView, "Customers"].Position--;
}
16. Thêm lệnh using sau vào ₫ầu file ₫ặc tả class Form :
using System.Data.OleDb;
Trang 3
17. Thêm các lệnh ₫ịnh nghĩa các thuộc tính dữ liệu cần dùng sau ₫ây vào ở vị trí ₫ầu class ₫ặc tả
Form :
//₫ịnh nghĩa các thuộc tính dữ liệu cần dùng
private String ConnectionString;
private DataViewManager dsView;
private DataSet ds;
private OleDbConnection cn;
18. Hiệu chỉnh lại hàm constructor của Form ₫ể có nội dung như sau :
public Form1() {
InitializeComponent();
//xây dựng chuỗi ₫ặc tả database cần truy xuất
ConnectionString
=
"Provider=Microsoft.Jet.OLEDB.4.0;
Data
Source
=
c:\\NorthWind.mdb;";
//tạo ₫ối tượng Connection ₫ến database
cn = new OleDbConnection(ConnectionString);
//tạo ₫ối tượng DataSet
ds = new DataSet("CustOrders");
//tạo ₫ối tượng DataApdater quản lý danh sách các khách hàng
OleDbDataAdapter da1 = new OleDbDataAdapter
("SELECT * FROM Customers", cn);
//ánh xạ Tablename "Table" tới bảng dữ liệu "Customers"
da1.TableMappings.Add("Table","Customers");
//chứa bảng Customers vào Dataset
da1.Fill(ds);
//tạo ₫ối tượng DataApdater quản lý danh sách các ₫ơn ₫ặt hàng
OleDbDataAdapter da2 = new OleDbDataAdapter
("SELECT * FROM Orders", cn);
//ánh xạ Tablename "Table" tới bảng dữ liệu "Orders"
da2.TableMappings.Add("Table","Orders");
// chứa bảng Orders vào Dataset
da2.Fill(ds);
//tạo ₫ối tượng DataApdater quản lý danh sách các mặt hàng
OleDbDataAdapter da3 = new OleDbDataAdapter
("SELECT * FROM [Order Details]", cn);
//ánh xạ Tablename "Table" tới bảng dữ liệu "Orders"
da3.TableMappings.Add("Table","OrderDetails");
// chứa bảng [Orders Details] vào Dataset
da3.Fill(ds);
//thiết lập quan hệ "RelCustOrd" giữa bảng Customers và Orders
System.Data.DataRelation relCustOrd;
System.Data.DataColumn colMaster1;
System.Data.DataColumn colDetail1;
colMaster1 = ds.Tables["Customers"].Columns["CustomerID"];
colDetail1 = ds.Tables["Orders"].Columns["CustomerID"];
relCustOrd = new System.Data.DataRelation
("RelCustOrd",colMaster1,colDetail1);
//"add" quan hệ vừa tạo vào dataSet
ds.Relations.Add(relCustOrd);
//thiết lập quan hệ "relOrdDet" giữa bảng Orders & [Order Details]
System.Data.DataRelation relOrdDet;
System.Data.DataColumn colMaster2;
System.Data.DataColumn colDetail2;
Trang 4
colMaster2 = ds.Tables["Orders"].Columns["OrderID"];
colDetail2 = ds.Tables["OrderDetails"].Columns["OrderID"];
relOrdDet = new DataRelation("RelOrdDet",colMaster2,colDetail2);
//"add" quan hệ vừa tạo vào dataSet
ds.Relations.Add(relOrdDet);
//Xác ₫ịnh DataViewManager của DataSet.
dsView = ds.DefaultViewManager;
//thiết lập Databinding giữa database với 2 DataGridView
grdOrders.DataSource = dsView;
grdOrders.DataMember = "Customers.RelCustOrd";
grdOrderDetails.DataSource = dsView;
grdOrderDetails.DataMember = "Customers.RelCustOrd.RelOrdDet";
//thiết lập Databinding giữa database với ComboBox
cbCust.DataSource = dsView;
cbCust.DisplayMember = "Customers.CompanyName";
cbCust.ValueMember = "Customers.CustomerID";
//thiết lập Databinding giữa database với 3 Textbox
txtContact.DataBindings.Add("Text",dsView,"Customers.ContactName");
txtPhoneNo.DataBindings.Add("Text",dsView,"Customers.Phone");
txtFaxNo.DataBindings.Add("Text",dsView,"Customers.Fax");
}
19. Chọn menu Debug.Start Debugging ₫ể dịch và chạy ứng dụng. Lúc ₫ầu, form sẽ hiển thị
thông tin về khách hàng ₫ầu tiên trong bảng, khi bạn click vào button "Tới" hay "Lùi", thông
tin khách hàng tương ứng sẽ tự ₫ược hiển thị. Bạn cũng có thể chọn 1 khách hàng tùy ý trong
ComboBox "Tên khách hàng :" ₫ể chương trình tự hiển thị thông tin chi tiết về khách hàng ₫ó.
20. Tóm lại Databinding trong VC# giúp ta giảm nhẹ rất nhiều công sức viết chương trình truy
xuất database : chúng ta chỉ viết ₫oạn code thiết lập databinding giữa các ₫ối tượng giao diện
với dữ liệu tương ứng trong database chứ chúng ta không cần viết ₫oạn code cập nhật nội
dung của các phần tử giao diện theo sự biến ₫ộng của database, chúng ta cũng không cần viết
code cập nhật database theo nội dung mà người dùng thay ₫ổi trên các ₫ối tượng giao diện.
Bạn đang xem tài liệu "Giáo trình thực hành Lập trình hướng đối tượng - Bài thực hành số 12.4: Lập trình dùng Databinding để chỉ viết code khởi tạo", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
giao_trinh_thuc_hanh_lap_trinh_huong_doi_tuong_bai_thuc_hanh.pdf

