Chương 4 Xây dựng các màn hình danh mục
4.7 Màn hình Bảng tham số
Tương tự chúng ta thiết kế màn hình bảng tham số như sau
STT Tên Control Loại Tên hàm xử lý
1 TSList ListView
2 txtTenThamSo TextBox
3 btnThem Button
4 btnXoa Button
5 btnCapNhat Button btnCapNhat_Click
6 btnSoanLai Button btnSoanLai_Click
Do tham số không cho phép thêm hay xóa, do đó chúng ta sẽ không tác động lên 2 nút nhấn thêm và xóa, đồng thời điều chỉnh trạng thái các nút này sang “disable” bằng cách chọn thuộc tính “Enabled” = False bên Properties dialog của VS.NET như sau:
Chương 4 - Xây dựng các màn hình danh mục
82 4.7.1 Lớp ThamSo_Form
Trước hết, khi form được load lên ta cần hiển thị các thông tin về các tham số đã có trong cơ sở dữ liệu lên trên listview. Do đó, trong hàm ThamSo_Form_Load ta sẽ gọi hàm
HienThiDanhSachThamSo như sau:
Private Sub ThamSo_Form_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
HienThiDanhSachThamSo() End Sub
Với hàm HienthiDanhSachThamSo được cài đặt như sau:
Private Sub HienThiDanhSachThamSo() TSList.Items.Clear()
Dim i As Integer Dim str As String Dim dt As DataTable
dt = ts.LayDanhSachThamSo 'Hiển thị danh sách bophan For i = 0 To dt.Rows.Count - 1 Dim lvi As ListViewItem
lvi = TSList.Items.Add((i + 1).ToString) str = dt.Rows(i)("TenThamSo")
lvi.SubItems.Add(str)
str = dt.Rows(i)("GiaTri").ToString lvi.SubItems.Add(str)
Next End Sub
Mục tiêu của hàm này là lấy thông tin các tham số được trả ra từ phương thức
LayDanhSachThamSo rồi đưa lên trên listview. Còn phương thức LayDanhSachThamSo là một phương thức thuộc lớp ThamSo, sẽ được đề cập trong phần sau.
Tiếp theo, tương tự như trong màn hình bằng cấp, chúng ta phát sinh các sự kiện click cho các nút nhấn Cập nhật và Soạn lại và tiến hành cài đặt như sau:
Private Sub btnCapNhat_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCapNhat.Click
If TSList.SelectedIndices.Count > 0 Then If KiemTraNhap() Then
ts.CapNhatThamSo(TSList.SelectedIndices.Item(0), txtGiaTri.Text)
HienThiDanhSachThamSo()
MessageBox.Show("Gía trị tham số đã được cập nhật thành công", "Thông báo", MessageBoxButtons.OK,
MessageBoxIcon.Information) txtGiaTri.Text = ""
End If Else
MessageBox.Show("Bạn phải chọn 1 dòng trong danh sách trước",
"Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) End If
End Sub
Private Sub btSoanLai_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btSoanLai.Click
txtGiaTri.Text = ""
End Sub
Ở đây, chúng ta có một số ràng buộc trên tham số nhập vào. Do đó chúng ta cần viết hàm kiểm tra xem dữ liệu tham số do người dùng nhập vào có hợp lệ hay không
Private Function KiemTraNhap() As Boolean If txtGiaTri.Text = "" Then
MessageBox.Show("Bạn chưa nhập giá trị", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning)
Return False End If
If Not IsNumeric(txtGiaTri.Text) Then
MessageBox.Show("Giá trị của tham số phải là số", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning)
Return False End If
Return True End Function
Và sau đó chúng ta phát sinh sự kiện SelectedTextChanged của control TSList tương tự như màn hình bằng cấp ở trên, và cài đặt như sau:
Private Sub TSList_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TSList.SelectedIndexChanged
If TSList.SelectedIndices.Count > 0 Then txtGiaTri.Text =
TSList.Items(TSList.SelectedIndices.Item(0)).SubItems(2).Text End If
End Sub
4.7.2 Lớp LyDoThanhLy
Lớp LyDoThanhLy Thuộc tính
Tên Lớp Ý nghĩa
Db Database Đảm nhiệm việc giao tiếp với
Chương 4 - Xây dựng các màn hình danh mục
84 LayDanhSachThamSo Lấy danh sách các tham số từ cơ sỏ dữ liệu
CapNhatThamSo Cập nhật lại thông tin của 1 tham số 4.7.2.1 Hàm tạo
Mã nguồn:
Public Sub New()
db = New Database(MainForm.SvrName, MainForm.DbName, True, "", "")
‘SvrName và DbName là 2 biến tĩnh (shared) của lớp MainForm) End Sub
4.7.2.2 LayDanhSachThamSo Kết quả trả về:
Kiểu / Lớp Ý nghĩa
DataTable Danh sách các tham số có trong CSDL Mã nguồn:
Public Function LayDanhSachThamSo() As DataTable
ts_dt = db.Execute("Select * from THAMSO order by TenThamSo") Return ts_dt
End Function
4.7.2.3 CapNhatThamSo Tham số:
Tên Kiểu / Lớp Ý nghĩa
Index Integer Số thứ tự của tham số cần xóa. Lưu ý rằng thứ tự các lý do được đưa lên màn hình hiển thị phải giống với thứ tự chúng được lấy ra bằng câu lệnh Select.
Ten String Tên tham số cần cập nhật.
Mã nguồn:
Public Sub CapNhatThamSo(ByVal index As Integer, ByVal giatri As String) Dim str As String
str = "Update THAMSO set GiaTri = " + giatri + " where TenThamSo = '" + ts_dt.Rows(index)("TenThamSo").ToString + "'"
db.ExecuteNonQuery(str) 'update data table LayDanhSachTHamso() End Sub