SysObject Grid view

Grid_Field_Display
Grid_Field_Hidden
Grid_Field_Format
Grid_Field_Add
Grid_Field_Update
Grid_Field_Input
Field_Css_ClassName
Grid_ColWidth
Grid_Field_Sum
Grid_TdColumn_HTML
Grid_Button
Grid_TempGridview
Grid_TempHTMLFile
Grid_Describe_Hearder
Grid_TreeNode_Sum
Grid_TreeNode_Temp_Link
Grid_TreeNode_Temp_Link_Count
Grid_Page_AddHtml
Grid_AddDatable
Grid_AddDatable_Row
Grid_Config


- Grid_Field_Display
  Danh sách cột cần hiển thị
  Ví dụ:
   Ma
   HoTen
   Lop
  Nếu table có nhiều trường, ko gõ lại nhưng cần 1 cột nào đó theo vị trí chỉ định thì
   TênCột:vị_trí
   Ví dụ:
   Lop:3
   -> Thì sẽ hiển thị hết các cột theo thứ tự trong xml, nhưng cột Lop được sắp xếp thứ 3


- Grid_Field_Hidden: danh sách cột ẩn, các cột cách nhau dấu enter


- Grid_Field_Format: Định dạng lại hiện thị tên cột, có chữ {0} để nạp nội dung.
    Ví dụ: Name:<div class="Name">{0}</div>
               <img src="{0}" alt="Chưa có ảnh" width="100px">

1. Cú pháp:
    TênTrường: str {0} str
2. Kiểu định dạng
Kiểu dịnh dạng chữ:   
* str là chữ muốn định dạng
    Ví dụ 1: muốn cột ThanhTien của GridData có thêm vnđ phía sau
    ThanhTien: {0} vnđ.
    Ví dụ 2: muốn cột tên đậm lên
    HoTen:<strong>{0}</strong>

Kiểu dịnh dạng số:  
  ThanhTien: {0:n0} vnđ.    

Kiểu dịnh dạng ngày:  
  Ngay: {0:dd/MM/yyyy}   
  Ngay: {0:dd/MM/yyyy HH:ss}  
 


Kiểu dịnh dạng tham chiếu HtmlLayout:  
    Tên trường: $TênIDLayout
    Ví dụ: Link:link/->/XEM/-/blank

Kiểu dịnh dạng tham chiếu cột khác:  
   TênTrường:{0} {rec:TenTruongThamChieu:rec}
  Ví dụ:
    HoTen:<strong>{0} {rec:PhongBan:rec}</strong>
    {r:PhongBan} -> tham chiếu giá trị cột Phòng Ban.


Ví dụ kết hợp với hàm iif-D:
GiaBan_1:{0:n0} đ <br>cl:<iif-D>Text:Exp<In>({rec:GiaBan_1<empty:0/>:rec}-{rec:GiaMuaBQ<empty:0/>:rec})*{rec:Ton<empty:0/>:rec}</In><covD>double</covD><fm>n0</fm></iif-D>
GiaBan_2:{0:n0} đ <br>cl:<iif-D>Text:Exp<In>({rec:GiaBan_2<empty:0/>:rec}-{rec:GiaMuaBQ<empty:0/>:rec})*{rec:Ton<empty:0/>:rec}</In><covD>double</covD><fm>n0</fm></iif-D>
GiaBan_3:{0:n0} đ <br>cl:<iif-D>Text:Exp<In>({rec:GiaBan_3<empty:0/>:rec}-{rec:GiaMuaBQ<empty:0/>:rec})*{rec:Ton<empty:0/>:rec}</In><covD>double</covD><fm>n0</fm></iif-D>

* trong hàm trên có áp dụng tính toán giữa các cột với nha
<covD>double</covD> là để chuyển kiểu chữ thành số
<fm>n0</fm> định dạng ra kiểu số, đúng là <fm>{0:n0}</fm> nhưng vì có { bị trùng hàm nên viết lại rút gọn.


** Chú ý lỗi khi cú pháp không đúng
{0} {ABC}  -> lỗi này {chỉ được dạng số}  , không có chữ trong dấu {xxx}

.... CHÚ Ý: có thể dùng lệnh <inputHtml:TEN_CONTRORT:inputHtml>
Ví dụ:   Ma: {0} <inputHtml:Grid_Filter:inputHtml>



- Grid_Field_Add
Thêm cột hiển thị vào GridData
Cú pháp:
Trường 1: Biểu thức 1/exp/kiểu
Trường 2: Biểu thức 2/exp/kiểu
Trường n: Biểu thức n/exp/kiểu

Kiểu: String , Int16 , Int32 , Int64 , Double , Decimal, Boolean
Biểu thức:
    Gia:1 * 2     -> có thể dùng 4 phép toán cơ bản + - *  / 
    Ví dụ:    TT:SL*DG / 100
    Nối 2 chuổi lại với nhau, kiểu phải là String và biểu thước: [Truong 1] + [Truong 2]
                Thêm ký tự cố định: [Truong 1] +':'+ [Truong 2]   -> chữ để trong dấu '   '

Ví dụ:
ChietKhau:CK*TT/100
TT:SL*DG + ChietKhau
ChenhLech:iif(ChietKhau>0,'Được CK','Ko')

CotThem:'Dòng chữ cần thêm'  
* bỏ trong dấu ' khi là chữ

Sau khi thêm thêm vào Grid_Field_ADD , ta nhập tên trường vào cột

* Ví dụ thêm làm thẻ style
** AddOrder:'<div style="display:{rec:_Display:rec}">X</div>

* Xử lý
       NumOrder_: iif(_SYS_ParentLevel=1,'<strong>'+NumOrder+'</strong>'   ,iif(_SYS_ParentLevel=2,' --'+NumOrder,''))


Grid_Field_Update
- Sau khi cột được thêm cần xử lý lại 1 lần nữa., quá trình được tính toán khi For dữ liệu theo từng row
TenCot:{rec:TenCot:rec}*2


Nếu tính toán xong làm tròn số
   TenCot:{rec:TenCot:rec}*2{cmd:Round:cmd}
Nếu lỗi trong tính toán trả về giá trị chỉ định thì thêm thẻ err

   TenCot:{rec:TenCot:rec}*2{err:0:err}


Ví dụ tham chiếu đến file xml khác để tính SUM

RealIncome:{DataCurrent_ThuChi:Compute/->/Sum(Thu)/-/Nhom='{rec:Name__:rec}'/-/:DataCurrent_ThuChi}
RealCost:{DataCurrent_ThuChi:Compute/->/Sum(Chi)/-/Nhom='{rec:Name__:rec}'/-/:DataCurrent_ThuChi}
DataCurrent_ThuChi: thì ThuChi là tên DataTable được thêm trong
Grid_AddDatable
ThuChi/->/ThuChi/2022.xml



Field_Css_ClassName

Dùng để class vào
TenCot: Tên Class thêm vào
** dùng thể thay đổi màu nền, màu chữ
   -> Màu chữ và màu nền



- Grid_ColWidth: độ rộng cột
 Ví dụ:
Icon:2%
NumOrder_:7%


- Grid_TreeNode_Sum
Nếu có cấp cha, thì tổng số cấp con hiển thị bên dưới, nếu để trống là 0 có, giống như sơ đồ của gia phả.
- Grid_TreeNode_Temp_Link
      Để trống / Html tự soạn / $mã ID LayoutHTML
      Để trống lấy mẫu mặc định tên: getdata_parent_link Html trong HtmlModule
      Hay dùng mẫu có sẵn trong LayoutHTML , bằng cách nhập dấu $mã ID LayoutHTM
      Nếu muốn mỗi cấp có style khác nhau, ta nhập như sau: $mã ID LayoutHTML;$mã ID LayoutHTML_2;$mã ID LayoutHTML_3 ..... cách nhau dấu ; , thứ tự lấy sẽ là cấp 0 ; cấp 1 ; cấp 2
- Grid_TreeNode_Temp_Link_Count
 Định dạng hiển thị số lượng cấp con, khi hiển thị ra có dạng ví dụ:    Phòng kế toán (2)
       - Để trống lấy mẫu mặt định tên: getdata_parent_link_count Html có dạng: ({0})
       - Hay dùng mẫu có sẵn trong LayoutHTML , bằng cách nhập dấu $mã ID LayoutHTM Nếu muốn mỗi cấp có style khác nhau, ta nhập như sau: $mã ID LayoutHTML;$mã ID LayoutHTML_2;$mã ID LayoutHTML_3 ..... cách nhau dấu ; thứ tự lấy sẽ là cấp 0 ; cấp 1 ; cấp 2
      - [hidden] để không hiện thị số lượng.
  Đối với Grid_TreeNode_Temp_Link và Grid_TreeNode_Temp_Link_Count
     -->  Nhập #:$$$ để định dạng theo cấp
     Ví dụ: mẫu mặc định là getdata_parent_link , ta thêm _p01 --> p03
     Được lấy tương ứng cấp 1: getdata_parent_link_p1 , cấp 2: getdata_parent_link_p2 .....
Ví dụ: 
Kế toán
---| Thủ quý
---| Ngân sách
Dấu --- và | cấu hình tại /Adminxml/xml_getdata.aspx?file=SysText.xml 


- Grid_Button
Nếu để trống hệ thống lấy mặc định tại /App_Data/html/xml_getdata/button.htm
Nếu muốn đổi lại ví dụ nhập như sau
<div style="margin-bottom:5px" class="grv_button">
<a class="btn btn-success mr-1 bt_grv_add" type="a" href="xml_form.aspx?file={url:file:url}&state=add&url_back={url:[url_current_ec]:url}" ><i class="far fa-plus-square"></i> THÊM</a>
</div>




- Grid_TdColumn_HTML
Trong lưới grid muốn thay thế lại 2 cột tít chọn và sửa
(Mẫu html lấy mẫu tại /app_Data/html/xml_getdata/gridview.htm)
*** Trong file gridview.htm có đoạn <#tb_tr:  ..... :tb_tr#> 
----------------
<#tb_tr:

        <tr>
            <td class="text-center sorting_1" style="width: 1%;" data-dt-row="0" data-dt-column="0">
                <input name="__SYS_chk_Row_{RowNumber}" type="checkbox" />
                <input name="_SYS_KEY" type="hidden" value="{rec:_SYS_KEY:rec}">
           </td>
            <td class="text-center" style="width: 1%;" data-dt-row="0" data-dt-column="1"><a class="mau_xanh" href="xml_form.aspx?file={rec:_SYS_Path:rec}&_SYS_KEY={rec:_SYS_KEY:rec}&state=edit{url:%find__%/-/&{n}={v}:url}{url:config_%/-/&{n}={v}:url}&url_back={url:[url_current_ec]:url}"><i class="fas fa-edit "></i></a></td>
            {_tr_row_}
        </tr>

 :tb_tr#> 


Ví dụ nhập lại Grid_TdColumn_HTML:
<tr>
            <td class="text-center sorting_1" style="width: 1%;" data-dt-row="0" data-dt-column="0">
                <input name="__SYS_chk_Row_{RowNumber}" type="checkbox" />
                <input name="_SYS_KEY" type="hidden" value="{rec:_SYS_KEY:rec}">
           </td>
            <td class="text-center" style="width: 1%;" data-dt-row="0" data-dt-column="1"><a class="mau_xanh bt_xemphieu_list" p_l="report.aspx?name=BanHangOnline/mayinnhiet&id={rec:ID_BanHang:rec}&set__Query=BanHangOnline/DonHangChiTiet_Ngay&file={url:file:url}"  p_w="500px" p_h="600px" p_t="Phiếu" data-toggle="modal" data-target="#Obj_popup_pIIF"  href="#">[Xem phiếu]</a></td>
            {_tr_row_}
</tr>

- Grid_TempGridview

Nếu để trống hệ thống lấy mặc định tại /App_Data/html/xml_getdata/gridview.htm
Nếu muốn đổi lại ví dụ nhập như sau

** Nếu muốn tham chiếu file riêng
~App_Data/html_form/vidu.htm
  file html thiết kế nên để ở App_Data/html_form
  * Nếu nhập đơn thuần vidu.htm thì mặc định vidu.htm nằm ở
/App_Data/html
  * Nếu nhập đơn thuần xml_getdata/vidu.htm thì mặc định vidu.htm nằm ở /App_Data/html/xml_getdata

 


- Grid_TempHTMLFile
Là cấu trúc html của toàn bộ file
** Để trống tham chiếu mặc định App_Data/html/xml_getdata.html
** Nếu muốn tham chiếu file riêng
~App_Data/html_form/vidu.htm
  file html thiết kế nên để ở App_Data/html_form
  * Nếu nhập đơn thuần vidu.htm thì mặc định vidu.htm nằm ở
App_Data/html/vidu.html

- Grid_Describe_Hearder

Thêm 1 link

<a target=_blank href="#" class="btn btn-primary" role="button" >Tạo nhanh</a>




- Grid_Page_AddHtml
Nếu muốn thêm html và css sau lưới gridview
Ví dụ thêm css để điều chỉnh cột khi xem ở di động, màn hình nhỏ:
<style>
@media (max-width: 768px) {
 .table .Name{
    font-size:0.7em;
    width:300px !important ;
  }
 }
</style>


Ngoài ra còn sử dụng javascript để lấy JSON, tham khảo /iif-admin/xmlgetdata-mot-so-nghiep-vu#4

- Grid_AddDatable
Thêm datatable vào bộ nhớ tạm để tính toán thêm cột....
dtLuong/->/Luong.xml/-/PhongBan='A'/-/TenPhong Asc/-/Distinct

Distinct: nhiều cột cách nhau dấu ,

- Grid_AddDatable_Row
cú pháp: TenCot1;TenCot2
cú pháp thêm lệnh: TenCot1*....;TenCot2
Mục đích: tại mỗi dòng dữ liệu để sinh html grid, ta cần lấy 1 data xml mà tên file được nhập từ giá trị xml
Ví dụ khi xem gridview danh sách nhân viên, tại mỗi row cần lấy 1 file xml lương theo giá trị nhập từ 1 cột chỉ định
Ta cần thêm 1 cột vào file nhanvien.xml là FileLuong
Ta nhập 1 nhân viên a, ta nhập giá trị cột FileLuong  là luong_a.xml
Thì ngay row xử lý sẽ lấy 1 DataTable FileLuong

Và lệnh gõ trong các cột khác để tính toán:
{DataCurrent_FileLuong:Ten/->/ts01/-/ts02/-/ts03:DataCurrent_FileLuong}
{DataCurrent_FileLuong:Compute/->/Ham(Truong)/-/Loc/-/Format/-/NeuRongThi:DataCurrent_FileLuong}

Giá trị lấy từ cột được áp dùng lệnh, ví dụ nhập giá trị {rec:Cot:rec} để lấy giá trị cột có tên chỉ định
Tham khảo lệnh tại: /iif-admin/su-dung-lenh-trong-mau-html

Nếu dữ liệu lấy có cấp cha con chú ý: để thêm lệnh gán thêm cột Tên Cha và mỗi dòng ta thêm
Grid_AddDatable_Row
TenCot*HasKeyParentAddNameP:X
X là tên cột NAME trong cấu trúc dữ liệu có cấp cha con.


Grid_AddDatable_Row
FileLuong*HasKeyParentAddNameP:X


Với Name là cột tên hiển thị dữ liệu, khi đó Data tự thêm cột tên SYS_Name_Parent , tức là tên của bảng ghi cha
(để thống kê số lượng cấp cha có bao nhiêu row con)

- Grid_Field_Sum
Ví dụ file xml có cột Luong và Thuong
Nhập là
Luong
Thuong

thì cuối lưới sẽ cộng tổng lại cho 2 cột trên

 


- Grid_AddDatable
  Nạp 1 DataTable từ file xml khác vào bộ nhớ tạm để xử lý tính toán
Cú pháp:
TenDataTable/->/File.xml
Ví dụ:
ThuChi/->/ThuChi/2022.xml

 

- Grid_AddDatable_Row
Khi xử lý vòng lặp, tại datarow sẽ nạp 1 table tùy theo giá tri của cột, mục đích để tính toán

TenCot*Lệnh_bổ_sung
Ví dụ:
PlanData*HasKeyParentAddNameP:Name
 
Sau đó tại Grid_Field_Add ta thêm lệnh:
TênCộtTrênGrid:'html....  {DataCurrent_TenCot:Compute/->/Hàm(Cột)/-/Điều_kiện/-//-/0:DataCurrent_TenCot}'
Ví dụ:
{DataCurrent_PlanData:Compute/->/Count(_SYS_KEY)/-/SYS_Name_Parent="Đã xong"/-//-/0:DataCurrent_PlanData}
Tham khảo hàm DataCurrent
xx
 



-Grid_Config


js_int_DataTable_file: thay đổi lại file int DataTable.net

{js_int_DataTable_file:ĐườngDẫnFile:js_int_DataTable_file}
Ví dụ: ĐườngDẫnFile là js_int_DataTable2.htm
   thì sẽ tự tham chiếu đến App_Data/html/xml_getdata/js_int_DataTable2.htm
Hay
~App_Data/html_form/js_int2.html

js_DataTable_add: thêm lệnh cấu hình int datatable.net

{js_DataTable_add:lệnh_js:js_DataTable_add}
Ví dụ: lệnh_js viết lại là
 stateSave: true
Nếu nhiều dòng viết cách dấu ,
 stateSave: true,
order: [[3, 'desc']]


-- cấu trúc thay thế

$(document).ready(function() {
         $('#dataTable').DataTable( {

             _datatable_cf_add_
            //cộng tổng
            _datatable_cf_sum_       
            ... code cau hinh DataTable    
    } );
} );

ví dụ thêm js cấu hình để ẩn dòng

tai Grid_Config : thêm dòng

 {js_DataTable_add:
columnDefs: [
        {
            target: 0,
            visible: false,
            searchable: false
        },
        {
            target: 1,
            visible: false
        }
    ]

:js_DataTable_add}

Cột 1 và cột 2 sẽ ẩn đi

statisticsData: Cấu hình để tạo ra dữ liệu thống kê

 {statisticsData:
GroupBy:TenCotNhom1;TenCotNhom2
ColumnAdd:TenCotThem1;TenCotThem2
Compute:Max(Cot1);Max(Cot2)
:statisticsData}

nhiều cột cách nhau dấu ;. Max có thể đổi lại MIN...

Sử dụng chức năng này phải tạo thêm 1 xmlObject và ẩn 2 cột đầu để giao diện dễ nhìn


 

Mục liên quan: