<Cthuvien:nhom>
Controls thay thế: BSSLke
Mô tả
<Cthuvien:nhom> là control nhập/chọn nhóm giá trị (kế thừa từ System.Web.UI.WebControls.TextBox, render <input type="text"> html).
Khi người dùng click vào ô, hệ thống sẽ gọi script nhom_click(this) để xử lý việc chọn nhiều giá trị cùng lúc từ danh sách liệt kê lke (thông qua hàm F_DAO của framework). Control cũng hỗ trợ gõ phím tắt (onkeyup="nhom_an(event)") để đảo trạng thái, đồng thời hỗ trợ cập nhật động thông tin chú thích (cthich) của giá trị được chọn vào một nhãn/textbox khác (gchu). Control tự động tương thích với các sự kiện của lưới khi đặt trong GridX.
Thuộc tính
Thuộc tính chung
| Tên | Kiểu | Mặc định | Có thể có | Mục đích | Thuộc tính mới | Ghi chú |
|---|---|---|---|---|---|---|
| ten | string | Thông báo tên của ô khi xảy ra lỗi. Nếu không có sẽ lấy id | label | |||
| nhap | bool | true | true / false | Ấn nhập có lấy thông tin hay không (C/K ở client). Trong lưới css_G... tự động gán K | ||
| kieu_chu | bool | false | true / false | Đổi giá trị nhập thành chữ in hoa hay không (C/K ở client) |
Chức năng
| Tên | Kiểu | Mặc định | Có thể có | Mục đích | Thuộc tính mới | Ghi chú |
|---|---|---|---|---|---|---|
| lke | string | Chuỗi cách nhau bởi dấu phẩy | Liệt kê các giá trị hiển thị trong danh sách chọn | Render ra client nếu có. | ||
| tra | string | Chuỗi cách nhau bởi dấu phẩy | Giá trị mã trả về tương ứng 1-1 với lke | Render ra client nếu có. | ||
| cthich | string | Chuỗi cách nhau bởi dấu phẩy | Liệt kê chú thích/tooltip tương ứng 1-1 cho từng giá trị trong lke | Dùng với JS client để đổ nội dung ra ô nhận (được khai báo attribute gchu) |
Khởi tạo
Control được khai báo trong file .aspx như một server control:
<Cthuvien:nhom ID="nhomQuyen" runat="server" lke="Xem,Sửa,Xóa,In" tra="V,E,D,P" ten="Nhóm quyền" />
Trước khi render ra client, function OnPreRender sẽ tự động chuyển các thuộc tính server-side thành HTML attribute để JavaScript phía client xử lý.
Các attribute luôn được gắn:
| Attribute | Giá trị | Mô tả |
|---|---|---|
tenKieu | "nhom" | Xác định loại control là chọn nhóm. |
ten_goc | ID | Lưu ID gốc của control. |
kieu_chu | "C" hoặc "K" | Trạng thái bật/tắt in hoa. |
lke | Giá trị lke | (Chỉ render nếu lke khác rỗng). |
tra | Giá trị tra | (Chỉ render nếu lke khác rỗng và tra khác rỗng). |
ten | Giá trị của ten | Tên hiển thị khi có lỗi (dùng ID nếu rỗng). |
onclick | nhom_click(this); | Xử lý click để mở danh sách chọn (hoặc đảo trạng thái). |
onkeyup | nhom_an(event); | Lọc phím gõ để điều khiển phím tắt. |
onkeydown | xuong(event); | Xử lý điều hướng xuống bằng bàn phím. |
Nếu control không nằm trong GridX (không có CssClass bắt đầu bằng css_G):
nhap:"C"(nếunhap=true) hoặc"K"(nếunhap=false).class: Nếu chưa khai báoCssClass, tự động gán mặc định là"css_ma".
Nếu control nằm trong GridX (CssClass bắt đầu bằng css_G), tự động áp dụng logic của lưới:
- Gắn
onblur="GridX_doiMauBF(event);" - Gắn
onfocus="GridX_doiMauBF(event);" - Gắn
onchange="GridX_hamUp(event)" - Gắn
nhap="K"
Hoạt động phía Client (JavaScript)
nhom_click(b_ctr): Xử lý sự kiện khi nhấp chuột vào ô.- Gọi hàm
F_DAO('', b_ctr)của hệ thống để mở danh sách chọn. - Gọi hàm
nhom_cthich(b_ctr)để tra cứu và hiển thị chú thích. Nếu có cấu hình attributegchu(ID của ô ghi chú nhận kết quả trên client), và có chuỗilkecũng như chuỗicthich, nó sẽ tìm vị trí (index) của giá trị hiện tại tronglkevà lấy giá trị ở vị trí tương ứng trong mảngcthichra, dùngform_P_DatGchugán vào control nhậngchu. - Cuối cùng gọi
form_eventDay(b_ctr)cho luồng hệ thống.
- Gọi hàm
nhom_an(b_event): Xử lý sự kiện nhả phím (onkeyup). Nếu phím gõ là ký tự đơn hợp lệ, nó sẽ chuyển tiếp phím gõ này cho hàmF_DAO(key, b_ctr)để tự động chọn giá trị tương ứng bằng phím tắt.
Ví dụ
Khai báo thông thường:
<Cthuvien:nhom
ID="nhomQuyen"
runat="server"
lke="Xem,Sửa,Xóa,In"
tra="V,E,D,P"
ten="Nhóm quyền" />
Mã HTML sinh ra (Client):
<input
name="ctl00$MainContent$nhomQuyen"
type="text"
id="ctl00_MainContent_nhomQuyen"
class="css_ma"
tenKieu="nhom"
lke="Xem,Sửa,Xóa,In"
tra="V,E,D,P"
kieu_chu="K"
ten_goc="nhomQuyen"
ten="Nhóm quyền"
onclick="nhom_click(this);"
onkeyup="nhom_an(event);"
onkeydown="xuong(event);"
nhap="C" />