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

<Cthuvien:nhap>

thông tin

Controls thay thế: BSSButton

Mô tả​

<Cthuvien:nhap> là control nút bấm (button) tiêu chuẩn của hệ thống (kế thừa từ System.Web.UI.HtmlControls.HtmlButton, render <button> html).

Control nổi bật với khả năng tự động nhận diện loại nút dựa trên keyword trong ID (nhap, moi, them, huy, xoa, tim, chon, sao, in, xem) để: tự động sinh biểu tượng icon phù hợp, tự động tạo phím tắt gạch chân chữ cái (accesskey), và tự động nhúng cơ chế chặn bấm liên tục (form_chay). Đối với các nút nhạy cảm (như ID chứa xoa hoặc moi), control tự động phát sinh hộp thoại yêu cầu xác nhận (confirm) trước khi thực thi.

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ú
idstringnhap, moi, them, huy, xoa, tim, chon, sao, in, xem,...Định danh của nút. Hệ thống sẽ bắt text ID này để xác định loại nút, icon, câu hỏi confirm.
TextstringNội dung văn bản hiển thị trên nút (nhập qua attribute Text)
WidthstringVd: 90pxĐộ rộng của nút
anhstring"K": ẩn ảnh
Tên file ảnh mới
Tên file icon (đuôi png) hiển thị đằng trước Text trên nútNếu để trống, tự tìm ảnh tương ứng với ID

Chức năng​

TênKiểuMặc địnhCó thể cóMục đíchThuộc tính mớiGhi chú
hoiint0Số ≥ 0Chỉ định vị trí (index) chữ cái trong Text để làm phím tắt (accesskey) và gạch chân.Bắt đầu từ 0.
giuboolfalsetrue/falseGiữ cờ form_chay thành 1 trước khi chạy hàm JS để khóa, không cho người dùng bấm tiếp.
hoi_xoastringChuỗi textNội dung câu hỏi xác nhận (confirm popup) sẽ hiển thị khi người dùng click nút.Nếu bỏ trống: ID chứa xoa tự hỏi "Có xóa không?", ID chứa moi tự hỏi "Có xóa màn hình không?"
onclickstringHàm JSSự kiện click sẽ được bọc lại an toàn trên server trước khi render ra trình duyệtXem chi tiết trong phần Khởi tạo

Khởi tạo​

Control được khai báo trong file .aspx như một server control:

<Cthuvien:nhap ID="nhap" runat="server" Width="90px" Text="Nhập" OnClick="bhhd_xeG_P_NHn()" giu="true" />

Trước khi render ra client, function OnPreRender sẽ tự động xử lý và bọc (wrap) logic HTML/JS khá phức tạp:

Các attribute luôn được gắn:

AttributeGiá trịMô tả
ten_gocIDLưu ID gốc của control.
anhGiá trị thuộc tính anh
chu_gocTextGiữ nội dung gốc ban đầu chưa có thẻ HTML.
hoiGiá trị của hoi
stylewidth:...Tự sinh nếu có Width.
classcss_buttonCSS mặc định. Trình duyệt IE cũ sẽ tự gán thêm onfocus / onblur đổi đuôi thành css_buttonf.
accesskeyKý tự từ vị trí hoiTự sinh để map với bàn phím.
hamHàm onclick gốcLưu trữ mã JS gốc do người dùng khai báo ở server control.

Cấu trúc HTML bên trong thẻ (InnerHtml): Dựa vào loại nút (bóc tách từ ID, vd ID là nhap thì sẽ tự sinh file Anhap.png), hệ thống sinh ra một thẻ <img src="..."/>. Ký tự tại vị trí hoi của chuỗi Text sẽ bị cắt ra và bọc lại bằng <span style='text-decoration:underline'>...</span> để hiển thị phần gạch chân báo hiệu phím tắt.

Cấu trúc bọc sự kiện onclick: Thay vì chạy ngay hàm gốc, sự kiện onclick sẽ được render thành một kịch bản theo thứ tự như sau:

  1. if (!confirm('Nội dung hỏi?')) {form_chay=0;return false;} (Chỉ sinh ra nếu có cấu hình hoi_xoa hoặc các ID đặc biệt như xóa, mới).
  2. if (form_Fb_CHAY()) {alert('Đang xử lý!'); return false;} (Kiểm tra xem hệ thống có đang bận submit gì không).
  3. form_chay=1; (Chỉ sinh ra nếu bật thuộc tính giu=true).
  4. Chạy sự kiện onclick gốc.
  5. form_chay=0; return false; (Reset trạng thái bận và ngăn submit form truyền thống của nút button).

Ví dụ​

Khai báo thông thường (XML):

<tr>
<td>
<Cthuvien:nhap ID="nhap" runat="server" Width="90px" Text="Nhập" OnClick="bhhd_xeG_P_NHn()" giu="true"/>
</td>
<td>
<Cthuvien:nhap ID="moi" runat="server" Width="90px" Text="Mới" OnClick="bhhd_xeG_P_MOI()" />
</td>
<td>
<Cthuvien:nhap ID="copy" runat="server" Width="90px" Text="Copy" OnClick="bhhd_xeG_P_COPY()" />
</td>
<td>
<Cthuvien:nhap ID="xoa" runat="server" Width="90px" Text="Xóa" OnClick="bhhd_xeG_P_XOA()" />
</td>
<td>
<Cthuvien:nhap ID="in" runat="server" Width="90px" Text="In" OnClick="bhhd_P_IN('XE_CG_GCN');" />
</td>
</tr>

Mã HTML sinh ra (Client):

<!-- Nút Nhập (Bật thuộc tính giu=true) -->
<button
id="ctl00_ContentPlaceHolder1_nhap"
ten_goc="nhap"
width="90px"
chu_goc="Nhập"
class="css_button"
ham="bhhd_xeG_P_NHn()"
onclick="if (form_Fb_CHAY()) {alert('Đang xử lý!'); return false;}form_chay=1;bhhd_xeG_P_NHn(); form_chay=0; return false;"
style="width:90px"
text="Nhập"
accesskey="n"
hoi="0"
anh="">
<img alt="" src="/images/bitmaps/Anhap.png"> <span style="text-decoration:underline">N</span>hập
</button>

<!-- Nút Mới (Tự động sinh confirm hỏi xóa màn hình) -->
<button
id="ctl00_ContentPlaceHolder1_moi"
ten_goc="moi"
width="90px"
chu_goc="Mới"
class="css_button"
ham="bhhd_xeG_P_MOI()"
onclick="if (!confirm('Có xóa màn hình không?')) {form_chay=0;return false;}if (form_Fb_CHAY()) {alert('Đang xử lý!'); return false;}bhhd_xeG_P_MOI(); form_chay=0; return false;"
style="width:90px"
text="Mới"
accesskey="m"
hoi="0"
anh="">
<img alt="" src="/images/bitmaps/Amoi.png"> <span style="text-decoration:underline">M</span>ới
</button>

<!-- Nút Xóa (Tự động sinh confirm hỏi xóa dữ liệu) -->
<button
id="ctl00_ContentPlaceHolder1_xoa"
ten_goc="xoa"
width="90px"
chu_goc="Xóa"
class="css_button"
ham="bhhd_xeG_P_XOA()"
onclick="if (!confirm('Có xóa không?')) {form_chay=0;return false;}if (form_Fb_CHAY()) {alert('Đang xử lý!'); return false;}bhhd_xeG_P_XOA(); form_chay=0; return false;"
style="width:90px"
text="Xóa"
accesskey="x"
hoi="0"
anh="">
<img alt="" src="/images/bitmaps/Axoa.png"> <span style="text-decoration:underline">X</span>óa
</button>