<Cthuvien:so>
Controls thay thế: BSSInput (với type="number")
Mô tả
<Cthuvien:so> là control nhập liệu định dạng số của hệ thống (kế thừa từ System.Web.UI.WebControls.TextBox, render <input type="text"> html).
Control tự gắn sự kiện onkeyup="so_an(event)" để lọc ký tự không hợp lệ, đảm bảo người dùng chỉ có thể nhập số. Nó hỗ trợ cấu hình đa dạng như số chữ số thập phân (so_tp), tự động phân nhóm hàng nghìn (nhom), cho phép hoặc chặn số âm (co_dau). Khi control bị khóa (ReadOnly hoặc Enabled=false), các sự kiện bàn phím sẽ tự động không được gắn để tránh lỗi. Tương thích tự động với các sự kiện của lưới 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 | |||
| co_dau | string | "C" | C: cho phép số âm K: không cho phép số âm | Có cho phép nhập số âm hay không | allowNegative | |
| so_tp | int | 0 | Số nguyên ≥ 0 | Số chữ số thập phân cho phép nhập | Nếu nhập số âm sẽ tự động đặt lại thành 2 | |
| nhom | bool | true | true / false | Có tự động định dạng phân nhóm hàng nghìn (dấu , hoặc .) hay không | ||
| 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 | ||
| gtriDau | string | "" | Giá trị số mặc định khi khởi tạo (client) |
Khởi tạo
Control được khai báo trong file .aspx như một server control:
<Cthuvien:so ID="txtTien" runat="server" so_tp="2" co_dau="C" />
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 | "so" | Xác định loại control là nhập số. |
ten_goc | ID | Lưu ID gốc của control. |
gtriDau | Giá trị của gtriDau | Render ra nếu có giá trị khác rỗng. |
co_dau | Giá trị của co_dau ("C" hoặc "K") | Để client biết có cho nhập dấu trừ (-) hay không. |
so_tp | Giá trị của so_tp | Để client biết giới hạn phần thập phân sau dấu chấm. |
nhom | "C" hoặc "K" | Bật/tắt tự động format phân nhóm hàng nghìn. |
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). |
Nếu control có bật (hoạt động) và không bị khóa ReadOnly:
onkeydown: Gắnxuong(event);(Xử lý điều hướng xuống).onkeyup: Gắnso_an(event);(Logic tự động format số).
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).onfocus: Gắncontro_select(this)để tự bôi đen số khi trỏ chuột vào (chỉ gắn nếu đang mở khóa).class: Tự động gán"css_so"nếuCssClassbị trống.
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)
Hàm so_an(b_event) phía client chịu trách nhiệm xử lý logic định dạng số (onkeyup):
- Phím dấu trừ (
-): Nếu gõ dấu trừ, kiểm tra thuộc tínhco_dau. Nếu bằng"C", đẩy dấu trừ lên vị trí đầu tiên của chuỗi, xóa các dấu trừ ở giữa khác. Ngược lại, loại bỏ ký tự trừ. - Phím dấu chấm thập phân (
.): Kiểm tra thuộc tínhso_tp. Giới hạn phần thập phân không vượt quáso_tp, không cho phép nhập nhiều dấu chấm cùng lúc. - Phân nhóm hàng nghìn: Sau khi chuẩn hóa chuỗi số thập phân, gọi hàm
CH_CSOgđể format chèn thêm các dấu chấm/phẩy chia tách nhóm hàng nghìn (ví dụ1,000,000.50) nếu thuộc tínhnhomđang ở cấu hình"C".
Ví dụ
Khai báo thông thường:
<Cthuvien:so
ID="txtTien"
runat="server"
so_tp="2"
co_dau="C"
ten="Số tiền" />
Khai báo trong GridX:
<asp:TemplateField HeaderText="Tiền" HeaderStyle-Width="120px">
<ItemTemplate>
<Cthuvien:so
ID="tien"
runat="server"
Width="120px"
CssClass="css_Gso"
so_tp="2"
co_dau="C" />
</ItemTemplate>
</asp:TemplateField>