<Cthuvien:gio>
thông tin
Controls thay thế: BSSCalendar
Mô tả
Cthuvien:gio là một control văn bản dùng để nhập giờ dạng hh:mm (kế thừa từ System.Web.UI.WebControls.TextBox, render thẻ <input type="text">). Control tự động bổ sung chức năng bắt sự kiện bàn phím của người dùng (onkeydown="xuong(event)", onkeyup="gio_an(event)") nhằm xử lý logic chặn ký tự không hợp lệ và format auto dấu hai chấm (:) trên client. Control cũng tương thích với việc sử dụng kết hợp 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ú |
|---|---|---|---|---|---|---|
| id | string | Định danh của control | ||||
| ten | string | Chứa đựng thông báo tên đối tượng khi có sự kiện/lỗi | ||||
| kt_xoa | string | "K" | K: không bao giờ xóa G: dùng cho mã L: dùng cho một số thông tin liên quan mã nhưng vẫn giữ khi làm mới form X: làm mới form là xóa | Xóa khi làm mới form | ||
| nhap | bool | true | true / false | Đánh dấu ấn nhập có lấy thông tin hay không (C hoặc K ở client) | Sẽ bị tự động đổi thành K khi đặt trong lưới (css_G...) |
Khởi tạo
Quá trình render phía server (OnPreRender)
- Gán
tenKieu = "gio"vàten_goc = ID. - Gán
kt_xoatheo giá trị khai báo. - Gán
onkeydown = "xuong(event);"vàonkeyup = "gio_an(event);". - Gán
ten: nếu trống, dùngIDthay thế. - Kiểm tra
CssClass:- Nếu bắt đầu bằng
css_G: gán sự kiện lưới và épnhap = "K". - Ngược lại: gán
nhaptheo giá trị khai báo.
- Nếu bắt đầu bằng
Attributes render ra client:
| Attribute | Giá trị | Mô tả |
|---|---|---|
tenKieu | "gio" | Xác định loại control |
ten_goc | ID | ID gốc của control |
ten | ten hoặc ID | Tên dùng cho thông báo/lỗi |
kt_xoa | Giá trị kt_xoa | Cơ chế xóa/làm mới |
onkeydown | "xuong(event);" | Xử lý phím điều hướng |
onkeyup | "gio_an(event);" | Format giờ tự động |
nhap | "C" / "K" | Có lấy thông tin khi nhập hay không |
Khi nằm trong lưới (css_G...), bổ sung thêm:
| Attribute | Giá trị |
|---|---|
onblur | "GridX_doiMauBF(event);" |
onfocus | "GridX_doiMauBF(event)" |
onchange | "GridX_hamUp(event)" |
Chức năng JavaScript
gio_an(event)
Xử lý sự kiện onkeyup, chạy sau mỗi lần người dùng nhấn một ký tự:
- Chỉ xử lý khi
key.length == 1(ký tự thực, bỏ qua phím điều hướng). - Lấy vị trí con trỏ hiện tại (tối đa 5).
- Gọi
CH_CGIđể chuẩn hóa giá trị (chèn dấu:đúng vị trí, lọc ký tự không hợp lệ). - Nếu ký tự tại vị trí con trỏ là
:, bước con trỏ qua 1. - Đặt lại vị trí con trỏ.
Fs_GIO_LOI(b_gio) → string
Kiểm tra tính hợp lệ của chuỗi giờ. Trả về chuỗi lỗi nếu sai, chuỗi rỗng nếu hợp lệ.
Các điều kiện kiểm tra:
- Chuỗi rỗng → hợp lệ (không bắt buộc).
- Độ dài khác 5 →
"Sai kiểu giờ". - Ký tự thứ 3 (index 2) không phải
:→"Sai kiểu giờ". - Giờ (
hh) > 24 →"Sai kiểu giờ". - Phút (
mm) > 59 →"Sai kiểu giờ". - Tổng
hhmm> 2400 (vd:24:01) →"Sai kiểu giờ".
Fs_GIO_LOI('08:30'); // ""
Fs_GIO_LOI('25:00'); // "Sai kiểu giờ"
Fs_GIO_LOI('830'); // "Sai kiểu giờ"
Fs_GIO_LOI(''); // ""
Ví dụ
Khai báo thông thường:
<Cthuvien:gio ID="txtGioKetThuc" runat="server" nhap="true" kt_xoa="K" ten="Giờ kết thúc" />
Mã HTML sinh ra (Client):
<input name="ctl00$MainContent$txtGioKetThuc" type="text" id="ctl00_MainContent_txtGioKetThuc" tenKieu="gio" ten_goc="txtGioKetThuc" kt_xoa="K" onkeydown="xuong(event);" onkeyup="gio_an(event);" ten="Giờ kết thúc" nhap="C" />