a. Thuộc tính
1.4.1. Giai đoạn 1: Thiết kế
Bước 1. Thêm mới cột Phái, kiểu Template Column. Nhập giá trị Header text, Sort expression cho cột này (nếu cần)
Bổ sung cột Phái kiểu Template Column
Bước 2. Từ thực đơn ngữ cảnh, chọn Edit Template \ Column[X] –YYY (X: Số thứ tự của cột; Y: Chuỗi tiêu đề của cột)
Chọn chức năng hiệu chỉnh cột Phái
Bước 3. Thêm điều khiển checkbox chkPhai, vào mục ItemTemplate
Bước 4. Chọn End Template Editing từ thực đơn ngữ cảnh sau khi thiết kế xong.
Điều khiển lưới sau khi đã được tùy biến cột Phái 1.4.2. Giai đoạn 2: Xử lý
Khác với Bound column, cột kiểu Template column không tự động hiển thị dữ liệu. Mà làm sao hiển thị dữ liệu được khi chính bản thân các điều khiển (mới được tạo khi thiết kế) không có qui định field cần được hiển thị từ nguồn dữ liệu. Do đó, để hiển thị dữ liệu (theo ý đồ của chúng ta), ta phải viết lệnh các xử lý trong sự kiện ItemDataBound
Mã lệnh xử lý:
(1) private void dtgKhach_hang_ItemDataBound() {
(2) if (e.Item.ItemIndex < 0) (3) return; (4) CheckBox chkPhai; (5) chkPhai = e.Item.FindControl("chkPhai"); (6) chkPhai.Checked = e.Item.DataItem("Gioi_tinh"); }
Trước khi đi vào tìm hiểu các lệnh xử lý trong đoạn lệnh trên, chúng ta cũng nên tìm hiểu ý nghĩa sự kiện ItemDataBound của DataGrid. Sự kiện ItemDataBound xảy ra ngay khi phương thức DataBind được gọi (lẽ đương nhiên là ta phải gán nguồn dữ liệu cho lưới trước đó). Ứng với mỗi dòng dữ liệu sẽ xảy ra một sự kiện ItemDataBound tương ứng.
Dòng lệnh (2): Dòng lệnh này kiểm tra xem lần xảy ra sự kiện này có phải dành
cho dòng dữ liệu hay không. Tại sao cần phải kiểm tra điều kiện này? Bởi vì không chỉ ứng với mỗi dòng dữ liệu, mà còn có các dòng Header, Footer và Pager, … cũng xảy ra trong sự kiện này.
Để biết được lần xảy ra sự kiện dành cho dòng nào, chúng ta kiềm tra giá trị của thuộc tính e.Item.ItemType. Thuộc tính này có các giá trị sau:
Các giá trị của thuộc tính ItemType
- AlternatingItem: Xảy ra ứng với dòng dữ liệu có chỉ số lẻ (dòng dữ liệu đầu tiên tính từ 0).
- EditItem: Ứng với dòng ở trạng thái hiệu chỉnh dữ liệu. - Footer: Ứng với dòng tiêu đề dưới.
- Header: Ứng với dòng tiêu đề.
- Pager: Ứng với dòng phân trang.
- SelectedItem: Ứng với dòng ở trạng thái đang được chọn. - Seperator: Ứng với dòng phân cách
- Bên cạnh đó, nếu ta chỉ quan tâm đến lần xảy ra sự kiện này có phải là dòng dữ liệu hay không, ta có thể sử dụng thuộc tính e.ItemIndex.
- e.Item.ItemIndex < 0: Đây không phải là dòng dữ liệu
- e.Item.ItemIndex >= 0: Đây là dòng dữ liệu. Giá trị của thuộc tính này cho biết chỉ số của dòng dữ liệu hiện hành.
Kết quả hiển thị
Đối với những xử lý phức tạp, sự kiện ItemDataBound sẽ là sự lựa chọn hàng đầu trong việc tùy biến hiển thị dữ liệu. Tuy nhiên, đối với những xử lý đơn giản, chúng ta có thể thực hiện liên kết dữ liệu trong quá trình thiết kế.
Chọn điều khiển chkPhai trong lúc thiết kế
Trên cửa sổ thuộc tính, chọn (DataBindings)
Chọn chức năng DataBidings
Trên cửa sổ thuộc tính, chọn (DataBindings). Hộp thoại DataBindings của điều khiển chkPhai xuất hiện.
Các thuộc tính có thể liên kết dữ liệu của điều khiển xuất hiện trong Danh sách bên trái hộp thoại. Chọn thuộc tính cần liên kết, chọn loại liên kết là Custom binding expression, nhập chuỗi liên kết dữ liệu trong điều khiển bên dưới theo cú pháp: