Hỏi: Tôi có một CSDL Access có 2 bảng Lop và Hocsinh. Tôi muốn thiết kế 1 trang web động có 2 comboBox là comboLop và comboHocsinh, khi nhấn vào comboBoxLop thì sẽ tự động lọc các học sinh của lớp đó và đưa vào comboHocsinh. Xin hướng dẫn.
Đáp:
Tôi có một CSDL Access có 2 bảng Lop và Hocsinh. Tôi muốn thiết kế 1 trang web động có 2 comboBox là comboLop và comboHocsinh, khi nhấn vào comboBoxLop thì sẽ tự động lọc các học sinh của lớp đó và đưa vào comboHocsinh. Xin hướng dẫn.
Trang web, nhất là trang web động, là 1 ứng dụng giống như 1 ứng dụng truyền thống, nghĩa là bạn có thể thực hiện bất kỳ chức năng nào bạn muốn trong trang web. Để dễ hiểu, bạn có thể coi 1 trang web động như 1 Form (1 hộp thoại) nới rộng, nó chứa nhiều đối tượng giao diện để tương tác với người dùng hầu thực hiện từng chức năng mà người dùng muốn tại mỗi thời điểm. Do đó việc xây dựng trang web động rất giống với việc xây dựng 1 Form giao diện của ứng dụng truyền thống, vấn đề cơ bản nhất là phải phân tích, thiết kế được trang web hay Form trước khi hiện thực nó bằng môi trường cụ thể. Sau đây là qui trình điển hình để xây dựng trang Web động giải quyết yêu cầu của bạn bằng môi trường ASP .Net:
1. Trước hết bạn phải định nghĩa được cấu trúc của 2 table Lop và Hocsinh, số field và ngữ nghĩa của từng field phụ thuộc vào yêu cầu xử lý của bạn. Thí dụ, chúng tôi định nghĩa table Lớp đơn giản gồm 2 field sau: Mãlớp và Tênlớp, còn table Hocsinh đơn giản gồm 3 field: Mãlớp, MãHọcsinh và TênHọcsinh. Kế tiếp chạy Access (hay bất kỳ hệ quản trị database nào) để tạo database mới (hay dùng lại database đã có), tạo mới từng table dữ liệu rồi nhập thông tin theo yêu cầu quản lý. Việc hiển thị danh sách các lớp lên trang web gồm 2 công đoạn: truy xuất các record chứa thông tin về các lớp cần hiển thị trong table Lớp rồi hiển thị nội dung từng record tìm được lên đối tượng hiển thị tương ứng. Việc hiển thị danh sách học sinh của 1 lớp nào đó lên ComboBox cũng tương tự như vậy.
2. để truy xuất database dễ dàng, độc lập với công nghệ quản lý database, bạn hãy kết hợp database của bạn với DSN tên là "DbAccess" bằng cách vào Control Panel, chạy icon "Administrative Tools", chọn mục DataSource và khai báo các thông tin liên quan đến database.
3. Chạy Visual Studio .Net, chọn menu File.New.Projects..., chọn kiểu "Visual Basic project", chọn icon "ASP .NET Web Application", hiệu chỉnh lại Location của website thành "http://localhost/QLHocsinh", chọn button OK để máy tạo Project mới theo các thông số khai báo.
4. Khi trang ASP với tên mặc định là WebForm1.aspx hiển thị, bạn hãy thiết kế giao diện của trang ASP như hình sau:
Lưu ý rằng 2 DropDownList miêu tả danh sách lớp và danh sách học sinh có tên (ID) là cbLop và cbHocsinh, thiết lập thuộc tính AutoPostBack cho cả 2 dropdownlist về giá trị TRUE.
5. Hãy chọn menu View.Code để hiển thị cửa sổ code của trang web rồi tạo hàm xử lý sự kiện InitializeComponent cho WebForm1 (bằng cách chọn mục WebForm1 trong listbox bên trên trái cửa sổ code và chọn mục InitializeComponent trong listbox bên trên phải cửa sổ code) rồi viết code VB .Net để đọc và hiển thị danh sách lớp vào dropdownlist cbLop như sau:
Code:
Code
Private Sub InitializeComponent()
Try
'Connection string truy xuất DSN
Dim MyConString As String = "DSN=DbAccess"
'tạo 1 connection đến database
Dim MyConnection As New OdbcConnection(MyConString)
MyConnection.Open()
'tạo 1 command chứa lệnh SQL truy xuất database
Dim MyCommand As New OdbcCommand
MyCommand.Connection = MyConnection
'Tìm các record của table DSLop
MyCommand.CommandText = "SELECT * FROM DSLop"
Dim MyDataReader As System.Data.Odbc.OdbcDataReader
MyDataReader = MyCommand.ExecuteReader
Dim strNV As String
'duyệt từng record và add mã lớp vào dropdownlist
While MyDataReader.Read
strNV = CStr(MyDataReader("MaLop"))
cbLop.Items.Add(strNV)
End While
'đóng các đối tượng đã dùng
MyConnection.Close()
MyDataReader.Close()
'Catch ODBC Exception
Catch MyOdbcException As OdbcException
Dim i As Integer
Console.Write(MyOdbcException.ToString)
'Catch program exception
Catch MyException As Exception
Console.Write(MyException.ToString)
End Try
End Sub
6. Tạo hàm xử lý sự kiện SelectedIndexChanged cho dropdownlist cbLop (bằng cách chọn mục cbLop trong listbox bên trên trái cửa sổ code và chọn mục SelectedIndexChanged trong listbox bên trên phải cửa sổ code) rồi viết code VB .Net để đọc và hiển thị danh sách học sinh của lớp mới được chọn vào dropdownlist cbHocsinh như sau:
Code:
Code
Private Sub cbLop_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cbLop.SelectedIndexChanged
Dim MaLop As String
'tìm mã lớp vừa được chọn bởi người dùng
MaLop = CType(cbLop.SelectedValue, String)
Try
'Connection string truy xuất DSN
Dim MyConString As String = "DSN=DbAccess"
'tạo 1 connection đến database
Dim MyConnection As New OdbcConnection(MyConString)
MyConnection.Open()
'tạo 1 command chứa lệnh SQL truy xuất database
Dim MyCommand As New OdbcCommand
MyCommand.Connection = MyConnection
'Tìm các học sinh của lớp được chọn
MyCommand.CommandText = "SELECT * FROM DSHocsinh where Malop = '" & MaLop & "'"
Dim MyDataReader As System.Data.Odbc.OdbcDataReader
MyDataReader = MyCommand.ExecuteReader
Dim strNV As String
'xóa nội dung cũ
cbHocsinh.Items.Clear()
'duyệt từng record và add tên HS vào dropdownlist
While MyDataReader.Read
strNV = CStr(MyDataReader("TenHocsinh"))
cbHocsinh.Items.Add(strNV)
End While
'đóng các đối tượng đã dùng
MyConnection.Close()
MyDataReader.Close()
'Catch ODBC Exception
Catch MyOdbcException As OdbcException
Dim i As Integer
Console.Write(MyOdbcException.ToString)
'Catch program exception
Catch MyException As Exception
Console.Write(MyException.ToString)
End Try
End Sub
7. Dời chuột về mục "WebForm1.apsx" trong cửa sổ "Solution explorer" rồi ấn phải chuột và chọn option "Set As StartPage" để thiết lập trang bắt đầu chạy của ứng dụng.
8. Chọn menu Debug.Start để chạy thử trang web quản lý học sinh vừa xây dựng được. Nếu có lỗi thì sửa lỗi cho đến khi hết lỗi.