<Cthuvien:thang>
Controls thay thế: BSSCalendar
Mô tả
<Cthuvien:thang> là control nhập liệu tháng/năm của hệ thống (kế thừa từ System.Web.UI.WebControls.TextBox, render <input type="text"> html).
Ô nhập chấp nhận định dạng tháng/năm mm/yyyy. Control tự gắn sự kiện bàn phím (onkeypress="thang_an(event)") để chỉ cho phép nhập ký tự số 0-9, chặn thao tác bôi đen text (onselectstart="return false;"), và tự động chèn dấu gạch chéo (/) khi người dùng gõ. Hỗ trợ 2 kiểu lưu kết quả vào CSDL (S - String, I - Int). Control cũng tự động tương thích với các sự kiện của GridX khi được đặt trong lưới.
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 | |||
| kt_xoa | string | "K" | K: không bao giờ xóa G: dùng cho mã L: 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 | Ấ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_luu | enum | S | S: String I: Int | Kiểu định dạng lưu kết quả tháng/năm vào CSDL |
Khởi tạo
Control được khai báo trong file .aspx như một server control:
<Cthuvien:thang ID="txtThang" runat="server" kieu_luu="I" />
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 | "thang" | Xác định loại control là thang. |
ten_goc | ID | Lưu ID gốc của control. |
Tchange | "K" | Cờ nhận biết thay đổi giá trị. Sẽ được set thành C khi gõ trên client. |
kieu_luu | Giá trị của kieu_luu | Định dạng kết quả là S hoặc I. |
kt_xoa | Giá trị của kt_xoa | Quy định trạng thái xóa nội dung khi form reset. |
ten | Giá trị của ten | Tên hiển thị khi có lỗi (dùng ID nếu rỗng). |
onkeydown | xuong(event); | Xử lý điều hướng xuống bằng phím. |
onkeypress | thang_an(event); | Tự động format thêm dấu / và loại bỏ ký tự chữ (chỉ cho phép nhập số). |
onselectstart | return false; | Chặn thao tác bôi đen (select) text trong ô nhập liệu. |
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), control sẽ bỏ qua các logic thông thường trên và tự động gắn 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)
Hàm thang_an(b_event) phía client chịu trách nhiệm xử lý logic khi gõ phím (onkeypress):
- Chặn ký tự: Bỏ qua nếu phím bấm không phải là ký tự số (
0đến9). Bỏ qua cả các phím điều khiển (Ctrl + key). - Hủy select text: Chủ động bỏ bôi đen text trong ô để tránh lỗi đè ký tự không mong muốn.
- Tự động format: Tính toán vị trí con trỏ và tự động tính chuỗi mới (hàm
CH_CTH). Nếu vị trí gõ tương ứng với dấu/, tự động dịch con trỏ qua 1 ký tự. - Cập nhật trạng thái: Đổi thuộc tính
Tchangethành"C"để ghi nhận sự thay đổi thực sự bởi người dùng.
Chức năng
Kiểm tra dữ liệu
Xử lý dữ liệu lưu
Ví dụ
Khai báo thông thường:
<Cthuvien:thang
ID="txtThang"
runat="server"
kieu_luu="I"
ten="Tháng" />
Khai báo trong GridX:
<asp:TemplateField HeaderText="Tháng" HeaderStyle-Width="100px">
<ItemTemplate>
<Cthuvien:thang
ID="thang"
runat="server"
Width="100px"
CssClass="css_Gma_c"
kieu_luu="I" />
</ItemTemplate>
</asp:TemplateField>