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

<Cthuvien:DR_lke>

thông tin

Controls thay thế: BSSLke

Mô tả​

Cthuvien:DR_lke là một control ComboBox tra cứu động xây dựng trên ô <input type="text" />. Khác với DR_list dùng danh sách tĩnh khai báo sẵn qua lke, control DR_lke được thiết kế để tra cứu dữ liệu từ CSDL thông qua thuộc tính ktra (render thành attribute ham_list ở client), hoặc mở Form tham khảo dạng popup qua f_tkhao (phím F1 hoặc click).

Control hỗ trợ:

  • Tra cứu động từ CSDL qua ham_list với các tùy chọn sắp xếp (xep) và tính chất lọc (tc).
  • Mở form tham khảo popup qua f_tkhao.
  • Tự động tích hợp với lưới GridX khi đặt trong ô lưới (CssClass bắt đầu bằng css_G).
  • Đặt giá trị mặc định khi load form qua gtriDau.
  • Lưu vết truy vấn bàn phím qua luu. c

Thuộc tính​

Thuộc tính chung​

TênKiểuMặc địnhCó thể cóMục đíchGhi chú
tenstring""Tên hiển thị trong thông báo lỗi/sự kiệnNếu để trống sẽ dùng giá trị ID
truotstring""Trượt menu/danh sách theo màn hình (cơ chế JS)
rongint0Số nguyên dươngĐộ rộng (px) của hộp thả xuốngNếu 0, lấy theo độ rộng thẻ text tự động
rongBboolfalsetrue / falseRàng buộc độ rộng menu popup theo thẻ DIV bao ngoàiNếu true, gán rong="C" trên client, ghi đè lên rong
nhapbooltruetrue / falseCho phép nhập tay hay không (C/K ở client)Khi đặt trong lưới (css_G...) luôn là K bất kể khai báo
kt_xoastring"K"K, G, L, XHành vi xóa/giữ giá trị khi làm mới formK: không xóa; G: dùng cho mã; L: giữ khi làm mới; X: luôn xóa
gtriDaustring""Giá trị mặc định khi form loadNếu chứa {, tách ra để gọi P_LKE_DAT đặt sẵn text và giá trị ẩn

Thuộc tính tra cứu​

TênKiểuMặc địnhCó thể cóMục đíchGhi chú
f_tkhaostring""URL pathĐường dẫn form tham khảo popup (thường mở bằng F1)Tự động ResolveUrl nếu là đường dẫn .aspx
ktrastring"""bảng,mã,tên"Chuỗi cấu hình tra cứu CSDL gồm tên bảng, trường điều kiện, trường kết quảRender thành attribute ham_list ở client
xepstring"T"M, TKiểu sắp xếp kết quả: T theo tên, M theo mãRender thành xep="2" (theo tên) hoặc xep="1" (theo mã) ở client
tcstring"C"C, T, ATính chất danh sách: C chi tiết, T tổng hợp, A tất cả
luuboolfalsetrue / falseLưu vết truy vấn bàn phímRender thành luu="C" hoặc luu="K" ở client
traAnstring""Giá trị ẩn (mã) tương ứng với text đang hiển thịRender vào attribute traAn ở client
traKieustring"A"A, TĐịnh dạng giá trị trả vềA: chỉ trả value; T: trả value|label

Khởi tạo​

Quá trình render phía server (OnPreRender)​

Khi trang render, DR_lke thực hiện tuần tự:

1. Xử lý dữ liệu:

  • Nếu ten để trống, gán ten = ID.
  • Nếu gtriDau được khai báo, tách chuỗi theo ký tự { để lấy phần giá trị và phần text, sau đó gọi form.P_LKE_DAT để đặt sẵn nội dung vào control.
  • Chuyển đổi xep: "M" → "1", "T" → "2".
  • Chuyển đổi luu: true → "C", false → "K".
  • Nếu f_tkhao là đường dẫn .aspx, tự động gọi ResolveUrl để chuyển thành URL tuyệt đối.

2. Gán attribute lên thẻ <input>:

AttributeGiá trịMô tả
tenKieu"DR_lke"Xác định loại control
tenten hoặc IDTên dùng cho thông báo/lỗi
ten_gocIDID gốc của control
kt_xoaGiá trị kt_xoaCơ chế xóa/làm mới
gtriDauGiá trị gtriDauGiá trị mặc định (nếu có)
truotGiá trị truotCơ chế trượt màn hình
rongSố px hoặc "C"Độ rộng dropdown
xep"1" hoặc "2"Kiểu sắp xếp kết quả
luu"C" hoặc "K"Lưu vết truy vấn
tcGiá trị tcTính chất danh sách
f_tkhaoURL đã resolveĐường dẫn form tham khảo
ham_listGiá trị ktraChuỗi cấu hình tra cứu CSDL
traAnGiá trị traAnGiá trị ẩn hiện tại
traKieuGiá trị traKieuKiểu kết quả trả về
textAnthis.TextText hiển thị hiện tại
dropL"K"Đánh dấu là control tra cứu động (không phải list tĩnh)
nhap"C" / "K"Có cho nhập tay hay không

3. Gán sự kiện client:

Control luôn gắn:

onmousedown="form_LIST_CLICK(this, 'K', event);"
onkeydown="lke_XUONG(event);"
ghi chú

Khác với DR_list truyền 'L' vào form_LIST_CLICK, DR_lke truyền 'K' để kích hoạt cơ chế tra cứu động thay vì mở danh sách tĩnh.

Nếu control nằm ngoài lưới và đã có onchange khai báo sẵn, hệ thống tự thêm kiểm tra vào trước:

onchange="lke_P_KTRA(this);<hàm_cũ>;"

Nếu control nằm trong lưới (CssClass bắt đầu bằng css_G), render theo cơ chế lưới:

nhap="K"
onchange="GridX_hamUp(event);"
onfocus="GridX_doiMauBF(event);"

4. CSS class mặc định:

Nếu CssClass chưa được đặt, control tự gán css_list.


So sánh với DR_list​

DR_listDR_lke
Nguồn dữ liệuChuỗi tĩnh khai báo qua lkeTra cứu động từ CSDL qua ktra
Mở popupKhôngCó, qua f_tkhao (phím F1)
dropL trên client"L""K"
Tham số form_LIST_CLICK'L''K'
Sắp xếp kết quảKhông áp dụngCó, qua xep
Lưu vết truy vấnKhôngCó, qua luu

Ví dụ​

Tra cứu nhân viên từ CSDL​

<Cthuvien:DR_lke
ID="drpNhanVien"
runat="server"
ten="Nhân viên"
ktra="ns_tq_nhanvien,ma,ten"
f_tkhao="~/ns/td/ns_tq_nhanvien.aspx" />

HTML render tương ứng:

<input
id="ctl00_MainContent_drpNhanVien"
type="text"
class="css_list"
tenKieu="DR_lke"
ten="Nhân viên"
ten_goc="drpNhanVien"
kt_xoa="K"
xep="2"
luu="K"
tc="C"
onmousedown="form_LIST_CLICK(this,'K',event);"
onkeydown="lke_XUONG(event);"
f_tkhao="/ns/td/ns_tq_nhanvien.aspx"
nhap="C"
ham_list="ns_tq_nhanvien,ma,ten"
traAn=""
traKieu="A"
textAn=""
dropL="K" />

Tra cứu với sắp xếp theo mã và lọc tổng hợp​

<Cthuvien:DR_lke
ID="drpDonVi"
runat="server"
ten="Đơn vị"
ktra="dm_donvi,ma,ten"
xep="M"
tc="T"
traKieu="T" />

Render trên client: xep="1" (theo mã), tc="T" (tổng hợp), giá trị trả về dạng "ma|ten".


Đặt trong lưới GridX​

<Cthuvien:DR_lke
ID="drpMaHang"
runat="server"
CssClass="css_Glist"
ten="Mã hàng"
ktra="dm_hang,ma,ten"
f_tkhao="~/dm/dm_hang.aspx" />

Render trong ô lưới:

<input
class="css_Glist"
tenKieu="DR_lke"
nhap="K"
ham_list="dm_hang,ma,ten"
f_tkhao="/dm/dm_hang.aspx"
dropL="K"
onmousedown="form_LIST_CLICK(this,'K',event);"
onkeydown="lke_XUONG(event);"
onchange="GridX_hamUp(event);"
onfocus="GridX_doiMauBF(event);" />

Đặt giá trị mặc định khi load​

<Cthuvien:DR_lke
ID="drpPhong"
runat="server"
ten="Phòng ban"
ktra="dm_phong,ma,ten"
gtriDau="P01{Phòng Kỹ thuật" />

Chuỗi gtriDau được tách theo {:

  • Phần trước { → giá trị ẩn (traAn): "P01"
  • Phần sau { → text hiển thị: "Phòng Kỹ thuật"

form.P_LKE_DAT sẽ đặt sẵn cả hai vào control khi render.