Sử dụng lệnh trong mẫu html

Sử dụng trang các html /app_data/html

1. Sử dụng lệnh iif trong mẫu
2. Lệnh url
3. Lệnh rec cho DataRow hiện tại, áp dùng trong xml_getdata.asxp
4. Lệnh xử lý cấu trúc Data hiện tại
5. Sử dụng lệnh thay thế nội dung từ objObject
6. Lệnh foreach
7. DataCurrent

1.
Sử dụng lệnh iif trong mẫu: Tham khảo lệnh
      Nạp file mẫu
      <iif-H>thumuc\file.html</iif-H>


2. Lệnh url
Cú pháp1:  Lấy url đơn giản từ url
  {url:TenThamSo:url}
Ví dụ 1:  name.aspx?id=10
  {url:id:url} kết quả sẽ là 10

Cú pháp 2: Lấy url có định dạng
  {url:TenThamSo/-/Format:url}
Ví dụ 2:  name.aspx?id=10
  {url:id/-/{n}=={v}:url} kết quả sẽ là id==10
    * n viết tắt là name, v là value.

Ví dụ có url:  ten.aspx?find_1=a&find_2=b&set=x

 * TenThamSo: có thể nhập tên url cố định, ví dụ find_1 hay find_2
        có thể lấy hết các url có từ đầu là find , thì nhập TenThamSo là find_%
  * Format để trống sẽ chỉ lấy giá trị của url
                nếu nhập {n}={v} thì ra là find_1=a
        - TH có muốn lọc hết các tham số ra 1 chuổi ví dụ
               {url:find_%/-/&{n}={v}:url} 
                   --->  kết quả là:    &find_1=a&find_2=b
 
Cú pháp 3: 
{url:TenThamSo<-LỆNH->:url}

Ví dụ 1: Tách giá trị từ url ra biến mảng bởi 1 ký tự
LỆNH:<-p:VỊ_TRÍ&-&KÝ_TỰ->
url name=BanHang/TaoPhieu
{url:name<-p:1&-&/->:url}
Kết quả ra là: TaoPhieu  
Giải thích: p là postion  , 1 vị trí mảng số 1 (khi tách có 2 mảng 0 là BanHang, 1 là TaoPhieu)
    dấu / là ký tự chia

Ví dụ : a.aspx?id=1&id=2&id=3
khi lấy {url:id:url}  kết quả là 1,2,3
Nhưng muốn lấy id đầu tiên thì {url:id<-p:0&-&,->:url}   ->kết quả là 1
Nhưng muốn lấy id cuối cùng thì {url:id<-p:end&-&,->:url}   ->kết quả là 3
  * end sẽ tự động lấy giá trị mảng cuối cùng.


Ví dụ 2:
LỆNH:<-ct:gt->
url name=BanHang/TaoPhieu
{url:name<-ct:T->:url}
Kết quả ra là: 1  vì có chữ T , nếu ko có trả về 0 
ct là containt
Ví dụ 3:
LỆNH:<-rep_empty:gt->
url name=BanHang/TaoPhieu
{url:name<-rep_empty:T->:url}
Kết quả ra là:  BanHang/aoPhieu
xóa đi chữ T

Cú pháp 4: 
  {url:[url_current]:url}   lấy đường dẫn hiện tại đang truy cập

  {url:[url_current]/-/del:ts1,ts2:url}   lấy đường dẫn hiện tại đang truy cập nhưng xóa đi các tham số sau del
    Ví dụ: đang đứng tại url ten.aspx?find_1=a&find_2=b&set=x
        {url:[url_current]/-/del:find_1,find_2:url}  
                   -> kết quả: ten.aspx?&set=x

  {url:[url_current_ec]:url}   lấy đường dẫn hiện tại đang truy cập, nhưng mã hóa lại
  {url:[url_currentRef]:url}   lấy đường dẫn trước chuyển đến
  {url:[url_exist_TEN]:url}   TEN là tham số url, nếu tồn tại trả về 1, nếu ko có trả về 0
  {url:[url_empty_TEN]:url}   TEN là tham số url, nếu ko tồn tại trả về 1, nếu có giá trị trả về có trả về 0

Tham chiếu:  HtmlWeb.Xu_Ly_Lenh_HTML_Request

3. Lệnh rec cho DataRow hiện tại, áp dùng trong xml_getdata và form, report.

* {rec:TEN_COT:rec}
Ví dụ: Lấy giá trị tên cột họ tên {rec:HoTen:rec}

*** Nâng cao:
   - format Định dạng
   - empty nếu rỗng thì
   - !empty nếu khác rỗng thì
   - slipD :tách
   - Tìm thuộc tính : tìm thuộc tính
   - ifRec :nếu
   - sysR  (các hàm nâng cao, chuyển số thành chữ....)



* Format: Có định dạng
{rec:TEN_COT/-/format :rec}
format:  {0} , {0:n0} kiểu số

Lấy giá trị tên thành tiền {rec:ThanhTien/-/{0:n0}:rec}
Nếu là 20000 kết quả: 20.000

* Empty: Khi rỗng
{rec:TEN_COT<empty:gia_tri_khi_rong:empty>:rec}
Ví dụ: khi cột thanhtien không có giá trị in ra là số 0
{rec:ThanhTien<empty:0:empty>:rec}

{rec:TEN_COT<empty:gia_tri_khi_rong:empty>:rec}

* Empty: Khác rỗng
{rec:ThanhTien<!empty:0:!empty>:rec}   khi có ! là nếu khác rồng gán giá trị cho..

* Áp dùng làm ẩn thể div khi không có giá trị, nếu giá trị cột PlanData không có giá trị thì ẩn thẻ div
{rec:PlanData<empty:none:empty><!empty:inline:!empty>:rec}

<div style="display:{rec:PlanData<empty:none:empty><!empty:inline:!empty>:rec}
"></div>


Áp dụng:
nếu cột SoLuong có giá trị sinh ra là HAS nếu không có giá trị sinh ra là NULL
{rec:SoLuong<empty:NULL:empty><!empty:HAS:!empty>:rec}
** Thường ta dùng làm tạo thẻ class trong css


* SlipD: tách chuỗi
{rec:TEN_COT<slipD:KyTuCach/-/{0} {1} {2}:slipD>:rec}
Ví dụ: giá trị cột TEN là A*B*C
{rec:TEN<slipD:*/-/{0} {1} {2}:slipD>:rec} giá trị ra là A B C


* Tìm thuộc tính
 - Tìm theo thuộc tính

{rec:TEN_COT->TenThuocTinh:rec}

Ví dụ: giá trị cột GhiChu là
Tuoi:20
Ten:A

{rec:GhiChu->Tuoi:rec}  -> kết quả ra là 20

 - Tìm theo tag bọc giá trị

{rec:TEN_COT->@TenTag:rec}

<#js_cf_datatable:
xxxx
:js_cf_datatable#>

{rec:TEN_COT->@js_cf_datatable:rec}    -> trả về xxxx
 


* Áp dụng nếu
{rec:TenCot<ifRec:exp1/->/kq1/--/exp2/->/kq2:ifRec>:rec}
Ví dụ:
{rec:Tuoi<ifRec:10/->/Tuoi la 10/--/20/->/Tuoi la 20{else:Chua ro:else}:ifRec>:rec}

{rec:Tuoi<ifRec:=={vl}=10/->/Tuoi la 10/--/=={vl}=20/->/Tuoi la 20:ifRec>:rec}


* Trong khi lặp áp dùng lệnh iif thêm R phía sau:
<iif-DR></iif-DR>
<iif-ER></iif-ER>


GiaBan_1:{0:n0} đ <br>cl:<iif-DR>Text:Exp<InR>({rec:GiaBan_1<empty:0/>:rec}-{rec:GiaMuaBQ<empty:0/>:rec})*{rec:Ton<empty:0/>:rec}</InR><covDR>double</covDR><fmR>n0</fmR></iif-DR>
 

- sysR:
  Tương tự
{rec:MoTa<sysR:SeoText:sysR>:rec}
    Giống lệnh iif-F nhưng đối {sys: thành <sysR:   :sysR>

{sys:HtmlEncode:sys}
{sys:SeoText:sys}
{sys:HtmlEncode_br:sys}
{sys:Replace:X:Y:sys}
{sys:ifReplace:GiáTrịSoSánh:GiáTrịMớiNếuBằng:sys}
{sys:Date:WeekDay:sys}
{sys:NumbersToLetters:sys}

*** Tham khảo thêm lệnh sys cho iif-F (For)

4. Lệnh xử lý cấu trúc Data hiện tại
Ví dụ file nhanvien.xml có cột Ma
{colexits:Ma}   kết quả là 1, nếu không có trả về 0


5.
Sử dụng lệnh thay thế nội dung từ objObject
    Cú pháp: {recObj:Ten_Cot:recObj}
    Ví dụ:  {recObj:Describe:recObj}  lấy giá trị ô Describe ra ngoài
   ***
    {recObj:TenO->TenThuocTinh:recObj}
    Ví dụ giá trị ô Config
   A:1
   B:2
   {recObj:Config->A:recObj}   kết quả ra 1

   {recObj:_Has_Folder:recObj}   -> nếu có thư mục trả về True, và không có thư mục trả về False  

   {recObj:_Folder:recObj}    --> trả về tên Object

      ?file=ChungKhoan.xml    -> ChungKhoan
      ?file=ChungKhoan/file1.xml    -> ChungKhoan

  {recObj:_HasFileObj:recObj}      nếu có cấu hình file objObject thì trả về True, ngược lại False

   Thường áp dụng với lệnh if

<iif-E>
<Type>=</Type><Val>{recObj:_HasFileObj:recObj}</Val><cVal>True</cVal>
  html...
</iif-E>
  Không áp dụng lệnh includeHTML



6. Lệnh foreach

{foreach:
  {_ColList:xxxx:_ColList}
  {_foreachCol:xxxx:_foreachCol}
:foreach}
 
Ký tự
   {#SYS_NUM_ORDER#}  : lấy số thứ tự bảng ghi

<ul class="list-group">
{foreach:
<li class="list-group-item"><div style="width:40px;" class="badge badge-danger badge-counter">{#SYS_NUM_ORDER#}</div>
<a href="{#_SYS_KEY#}"></a>
</li>
:foreach}
</ul>

** Giải thích:
{#SYS_NUM_ORDER#}: lấy vị trí bảng ghi
{#_SYS_KEY#}: lấy giá trị khóa

{foreach:
<div class="card">
  <div class="card-body">
 {_ColList:Truong1,Truong2:_ColList}
 {_foreachCol:
    <strong><i class="far fa-thumbs-down"></i>: {_col_name_}</strong>
    <div style="margin:10px;">{_value_}</div>
 :foreachCol_}
    <a href="#top" title="move top"><i class="fas fa-upload"></i> [TOP]</a>
    <a name="{#_SYS_KEY#}"></a>
    
  </div>
</div>
:foreach}

** Giải thích:
{_col_name_}: tên cột
{_value_}: lấy giá trị
 

7. DataCurrent
Áp dụng trong Grid_Field_Update của Gridview

{DataCurrent:Ten/->/ts01/-/ts02/-/ts03:DataCurrent}
+ Compute

{DataCurrent:Compute/->/Sum(Thu)/-/Nhom='{rec:Name__:rec}'/-/:DataCurrent}

{DataCurrent:Compute/->/Ham(Truong)/-/Loc/-/Format/-/Nếu Null trả về:DataCurrent}

Mục liên quan: