Chuyển tới nội dung chính

<Cthuvien:so>

thông tin

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ênKiểuMặc địnhCó thể cóMục đíchThuộc tính mớiGhi chú
tenstringThông báo tên của ô khi xảy ra lỗi. Nếu không có sẽ lấy idlabel
co_daustring"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ôngallowNegative
so_tpint0Số nguyên ≥ 0Số chữ số thập phân cho phép nhậpNếu nhập số âm sẽ tự động đặt lại thành 2
nhombooltruetrue / falseCó tự động định dạng phân nhóm hàng nghìn (dấu , hoặc .) hay không
kt_xoastring"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
nhapbooltruetrue / 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
gtriDaustring""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:

AttributeGiá trịMô tả
tenKieu"so"Xác định loại control là nhập số.
ten_gocIDLưu ID gốc của control.
gtriDauGiá trị của gtriDauRender ra nếu có giá trị khác rỗng.
co_dauGiá trị của co_dau ("C" hoặc "K")Để client biết có cho nhập dấu trừ (-) hay không.
so_tpGiá 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_xoaGiá trị của kt_xoaQuy định trạng thái xóa nội dung khi form reset.
tenGiá trị của tenTê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ắn xuong(event); (Xử lý điều hướng xuống).
  • onkeyup: Gắn so_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ếu nhap=true) hoặc "K" (nếu nhap=false).
  • onfocus: Gắn contro_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ếu CssClass bị 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ính co_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ính so_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ính nhom đ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>