Cách tạo Form nâng cao

Cách tạo Form nâng cao trong ngôn ngữ lập trình iif

1. Cách tạo
2. Cách thực thi
3. Query
4. Dùng lệnh
5. Sử dụng các lệnh từ iif để làm giao diện
6. Các tham số url
7. Cấu hình config
 - AddUrlPara
9. Một số nghiệp vụ hay code
10. Một số lỗi hay gặp
--------


1. Cách tạo

Truy cập đường dẫn: /Adminxml/xml_form_ds.aspx?file=SysFormHTML.xml

Name: Tên
Title: hiển thị trên cùng
Query: nguồn truy cập dữ liệu
HTML_Start
HTML_Body
HTML_End
HTML_Header
Config


2. Cách thực thi
* Chế độ 1:
/adminxml/xml_form_ds.aspx?name=Tên
/adminxml/xml_form_ds.aspx?name=Tên&config_sys=nomaster  (ko xuất hiện giao diện menu)

* Chế độ 2:
** /adminxml/xml_form_ds_mini.aspx?name=Tên

* Chế độ mini chạy sẽ không nạp các thư viện js, css từ trang master



3. Query: Lấy nguồn dữ liệu từ Query đã tạo
   Có thể để trống, nếu dùng dữ liệu nên sử dụng để tăng tốc độ xử lý.
   * Nếu query để trong file riêng cấu hình BanHang_iif/BangGia
           File query BanHang_iif.xml có tên BangGia
    Tham khảo cách tạo Query

      Có 2 cách lấy dữ liệu trong html của form
      * Cách 1: truy cập trực tiếp từ html
     <iif-F>
  <Source><type:query/>BanHang_iif/DonHang_Load</>0</Source>
  <ItemF>
  <%i=Ten=i%>      
  </ItemF>
  </iif-F>
    * Nếu lấy 1 table thì ổn, nhưng nếu lấy nhiều table thì chậm vì lấy 1 table phải kết nối sql 1 lần
      * Cách 2: cấu hình tên query tại ô query, Ví dụ query trả về 2 table 0 1
<iif-F>
  <Source><type:query/>#</>0</Source>
  <ItemF>
  <%i=Ten=i%>      
  </ItemF>
  </iif-F>
<iif-F>
  <Source><type:query/>#</>1</Source>
  <ItemF>
  <%i=Ten=i%>      
  </ItemF>
  </iif-F>
 
  Cách 3:
<script>

   $.get("Query_Do.aspx?name=NhaHang/SoDoTiec&out=json&nam=2023&thang=2", function(data, status){
       for (x in data.Q1) {
          alert( data.Q1[x]._SYS_KEY );
      }
  });
</script>
* Cách này có nhược điểm là query lấy xong mới trả về có độ trể, nên chưa tương tác được với biến của trang

Cách 4: sinh đối tượng json từ Query đã tạo
<script>
const obj1 = JSON.parse('<iif-F><Source><type:query/>NhaHang/SoDoTiec</>0</Source><OutData>json</OutData></iif-F>');
alert(obj1.length);
</script>
 * Cách lặp đối tượng json

* Cách này hay dùng



4. Dùng lệnh trong
 HTML_Start, HTML_Body, HTML_End, HTML_Header
Lệnh nạp file html
<iif-H>tenfile.htm</iif-H> 
  * Tham chiếu thư mục App_Data/html_form/tenfile.htm
  * Nếu để trong thư mục cấp con
    ví dụ: App_Data/html_form/banhang_iif/trangchu.html thì dùng
<iif-H>/banhang_iif/trangchu.htm</iif-H> 
Gợi ý:
Nếu Form có tên TaoPhieu được tạo vào 1 file xml có tên ví dụ là BanHang.xml
Khi truy cập form có url là: xml_form_ds.aspx?name=BanHang/TaoPhieu

Thì tại lệnh #_url_name_#  sẽ trả về BanHang/TaoPhieu
Ta muốn thống nhất tất cả các Form trong file BanHang.xml truy cập đến
    * path thực tại: /App_Data/html_form/BanHang
      Thì ta dùng lệnh  <iif-H>/#_url_name_#.htm</iif-H>
      -->  Tất cả các file để vào 1 thư mục dễ quản lý, nếu có đổi tên thư mục giúp linh hoạt hơn.
     Chỉ dùng trong HTML_Body và HTML_Hearder
    * Tham khảo cách lấy dữ liệu ra form qua html
   
* Để thêm css hay js vào Form
Tại HTML_Header
Thêm
<style>
<iif-H>/banhang_iif/trangchu.css</iif-H>  
</style>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>

*** Các file để tại /App_Data/html_form/banhang_iif
banhang_iif là thư mục tạo thêm để dễ quản lý theo từng phần mềm, có thể để bên ngoài /App_Data/html_form

Gợi ý:
Cách nạp css <iif-H>/banhang_iif/trangchu.css</iif-H>   sẽ làm chậm, vì lệnh css được nạp thẳng vào html
Để nhanh nạp kiểu:
<link href="/vendor/datatables/extend/style_01.css" rel="stylesheet">

** Thứ tự thực thi lênh <iif-F>
<iif-F0></iif-F0>
<iif-F></iif-F>
<iif-F1></iif-F1>





5. Sử dụng các lệnh từ iif để làm giao diện

   Tham khảo các lệnh iif  

6. Các tham số url
     config_sys=nomaster để không xuất hiện menu
    Không xuất hiện nút button sys Cấu hình  bt_sys_config:
    Thêm trên url:    &config_class_hide=bt_sys_config

7. Cấu hình config
 
  * AddUrlPara
* nếu url FORM chưa có tham số chỉ định thì tạo ra, nếu đã có thì lấy url đang dùng

Ví dụ: khi truy cập form
- xml_form_ds.aspx?name=NhaHang/SoDoBanTiec
    * Nếu chưa có tham số url tháng và năm thì tạo ra lấy ngày hiện hành
- xml_form_ds.aspx?name=NhaHang/SoDoBanTiec&thang=02&nam=2023

Ví dụ 1: tạo tham số thang=&nam=  (hiện hành)
thang</><iif-D>Date:Now<fm>{0:MM}</fm></iif-D>
nam</><iif-D>Date:Now<fm>{0:yyyy}</fm></iif-D>
Ví dụ 2: tạo tham số ngày bắt đầu và kết thúc của tháng hiện hành
tungay</><iif-D>Date:Now_AddDay;-1<fm>{0:1/MM/yyyy}</fm></iif-D>
denngay</><iif-D>Date:Now_AddDay;-1<fm>{0:#DaysInMonth/MM/yyyy}</fm></iif-D>
Ví dụ 3: tạo tham số ngày bắt đầu và kết thúc của năm hiện hành

<iif-D>Date:Now_AddDay;-1<fm>{0:1/1/yyyy}</fm></iif-D>
<iif-D>Date:Now_AddDay;-1<fm>{0:31/12/yyyy}</fm></iif-D>

 

9. Một số nghiệp vụ hay sử dụng khi code
     - Lấy dữ liệu query đưa vào Form HTML
    
 

10. Một số lỗi hay gặp
* File html đã có nhưng không nạp ra
    Nguyên nhân do: thiếu lệnh <iif-H>/#_url_name_#.htm</iif-H>  trong HTML_Body
 

Mục liên quan: