<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 7.1.樹形表格 :id=treeTable treeTable樹形表格已進行了重寫,模塊名是treeTable,舊版模塊名是treetable,不要搞混了, [查看演示](https://whvse.gitee.io/treetable-lay/demo2x/index.html)。 ## 7.1.1.快速使用 :id=start 方法渲染: ```html <table id="demoTb1"></table> <script> layui.use(['treeTable'], function () { var $ = layui.jquery; var treeTable = layui.treeTable; var data = [{ id: '1', name: 'xxx', createTime: '2019/11/18 10:44:00', children: [ { id: '1_1', name: 'xxx', createTime: '2019/11/18 10:44:00' }] }, { id: '2', name: 'xxx', createTime: '2019/11/18 10:44:00', children: [{ id: '2_1', name: 'xxx', state: 0, createTime: '2019/11/18 10:44:00', children: [] }] }]; // 渲染表格 var insTb = treeTable.render({ elem: '#demoTb1', data: data, // 數據 tree: { iconIndex: 1 // 折疊圖標顯示在第幾列 }, cols: [ {type: 'numbers'}, {field: 'id', title: 'ID'}, {field: 'name', title: 'name', width: 160}, {field: 'createTime', title: '創建時間', width: 180} ] }); }); </script> ``` 使用pid形式的數據: ```javascript var data = [{ id: '1', name: 'xxx', createTime: '2019/11/18 10:44:00', }, { pid: '1', id: '1_1', name: 'xxx', createTime: '2019/11/18 10:44:00' },{ id: '2', name: 'xxx', createTime: '2019/11/18 10:44:00', },{ pid: '2', id: '2_1', name: 'xxx', state: 0, createTime: '2019/11/18 10:44:00', children: [] }]; // 渲染表格 var insTb = treeTable.render({ elem: '#demoTb1', data: data, // 數據 tree: { iconIndex: 1, // 折疊圖標顯示在第幾列 isPidData: true // 是否是pid形式數據 }, cols: [ {type: 'numbers'}, {field: 'id', title: 'ID'}, {field: 'name', title: 'name', width: 160}, {field: 'createTime', title: '創建時間', width: 180} ] }); ``` 請求網絡數據、懶加載: ```javascript var insTb = treeTable.render({ elem: '#demoTb1', tree: { iconIndex: 1, // 折疊圖標顯示在第幾列 idName: 'id', // 自定義id字段的名稱 pidName: 'pid', // 自定義標識是否還有子節點的字段名稱 haveChildName: 'haveChild', // 自定義標識是否還有子節點的字段名稱 isPidData: true // 是否是pid形式數據 }, cols: [ {type: 'numbers'}, {field: 'id', title: 'ID'}, {field: 'name', title: 'name', width: 160}, {field: 'createTime', title: '創建時間', width: 180} ], reqData: function(data, callback) { // 在這里寫ajax請求,通過callback方法回調數據 $.get('list.json', function (res) { callback(res.data); // 參數是數組類型 }); } }); ``` !> 用法大部分與數據表格table模塊一致,需要注意:cols是一維數組,不是二維數組。 ## 7.1.2.基礎參數一覽表 :id=options 參數 | 類型 | 說明 | 示例值 :--- | :--- | :--- | :--- elem | String/DOM | 指定原始 table 容器的選擇器或 DOM | '#demo' cols | Array | 設置表頭。值是一維數組 | 詳見表頭參數 data | Array | 直接賦值數據 | [{}, {}, {}, {}, …] width | Number | 設定容器寬度 | 350 height | Number/String | 設定容器高度 | 300 / 'full-150' cellMinWidth | Number | 定義所有單元格的最小寬度 | 100 text | Object | 自定義文本,如空數據提示等 | 詳見自定義文本 skin | String | 設定表格風格 | line行邊框、row列邊框、nob無邊框 even | Boolean | 開啟隔行背景| true/false size | String | 設定表格尺寸 | sm 小尺寸、lg 大尺寸 tree | Object | 設定樹相關參數 | 詳見樹相關參數 style | String | 設定容器的樣式 | 'margin-top: 0;' getThead | Function | 自定義表頭 | 詳見自定義表頭 reqData | Function | 懶加載數據 | 詳見懶加載數據 ## 7.1.3.表頭參數一覽表cols :id=cols 參數 | 類型 | 說明 | 示例值 :--- | :--- | :--- | :--- field | String | 設定字段名 | 'username' title | String | 設定標題名稱 | 用戶名 width | Number | 設定列寬,若不填寫,則自動分配 | 150 minWidth | Number | 單元格的最小寬度 | 100 type | String | 設定列類型 | checkbox復選框、radio單選框、numbers序號列、space空列 edit | String | 單元格編輯類型 | text(輸入框) style | String | 自定義單元格樣式| color: red; align | String | 單元格排列方式 | center居中、right居右 templet | String | 自定義列模板 | 詳見自定義列模板 toolbar | String | 綁定工具條模板 | 詳見行工具事件 > templet和toolbar用法與數據表格table模塊一致 ## 7.1.4.樹相關參數一覽表tree :id=tree 參數 | 類型 | 說明 | 示例值 :--- | :--- | :--- | :--- iconIndex | Number | 圖標列的索引 | 默認0 onlyIconControl | Boolean | 僅允許點擊圖標折疊 | 默認false arrowType | String | 箭頭類型 | 可選'arrow2' getIcon | Function | 自定義樹形圖標 | 詳見自定義樹形圖標 isPidData | Boolean | 是否是pid形式的數據,懶加載方式不需要 | 默認false idName | String | 設定id的字段名 | 默認'id' pidName | String | 設定pid的字段名,children形式數據不需要 | 默認'pid' childName | String | 設定children的字段名,pid形式數據不需要 | 默認'children' haveChildName | String | 設定是否有子集的字段名,用于懶加載 | 默認'haveChild' openName | String | 設定是否默認展開的字段名 | 默認'open' ## 7.1.5.自定義文本text :id=text 目前只支持自定義空數據提示: ```javascript treeTable.render({ text: { none: '<div style="padding: 15px 0;">哎呀,一條數據都沒有~</div>' } }); ``` ## 7.1.6.自定義表頭 :id=tb_head treeTable實現復雜表頭的做法與table模塊不同,方法如下: ```javascript treeTable.render({ getThead: function() { return '<tr><td colspan="6">我是表頭</td></tr>'; } }); ``` 就是這么簡單粗暴,直接返回表頭的html即可,不用在cols里面糾結半天,所以treeTable的cols是一維數組。 ## 7.1.7.自定義樹形圖標 :id=tree_icon 內置了兩種風格圖標,你也可以很靈活的自己擴展風格: ```javascript treeTable.render({ tree: { arrowType: 'arrow2', // 自定義箭頭風格 getIcon: function(d) { // 自定義圖標 // d是當前行的數據 if (d.haveChild) { // 判斷是否有子集 return '<i class="ew-tree-icon ew-tree-icon-folder"></i>'; } else { return '<i class="ew-tree-icon ew-tree-icon-file"></i>'; } } } }); ``` ew-tree-icon-folder(文件夾)和ew-tree-icon-file(文件)這兩個class是treeTable內置的, 你可以換成其他clss自己加樣式,ew-tree-icon這個class是必須的。 !> 判斷是否有子集d.haveChild這個寫法根據你的實際情況寫,如果是children形式數據可以寫(d.children&&d.children.length>0) ## 7.1.8.懶加載數據 :id=req_data 實現reqData參數即可實現懶加載數據: ```javascript treeTable.render({ elem: '#demoTable', reqData: function(data, callback) { // data是當前行的數據,通過callback回調子集數據 callback([]); }, tree: { iconIndex: 2, // 折疊圖標顯示在第幾列 idName: 'id', // 自定義id字段的名稱 haveChildName: 'haveChild' // 自定義標識是否還有子節點的字段名稱 } }); ``` 你可以在reqData里面寫ajax請求: ```javascript treeTable.render({ reqData: function(data, callback) { var pid = data?data.id:''; $.get('list.json?pid='+pid, function (res) { callback(res.data); }); } }); ``` json數據參考格式: ```json {"code": 200, "data": [{"id": "1", "name": "xxx", "haveChild": true}]} ``` 通過haveChild標識是否還有子節點,id也是必須的字段,這兩個字段的名字可以在tree參數里面自定義。 !> reqData這個方法里面也可以一次性把所有數據都返回,也可以懶加載。 ## 7.1.9.默認展開 :id=open 通過在數據里面增加open字段來控制是否默認展開: ```javascript var data = [{ id: '1', name: 'xxx', open: true, // 默認展開 children: [ { id: '1_1', name: 'xxx', createTime: '2019/11/18 10:44:00' }] }, { id: '2', name: 'xxx', open: true, // 默認展開 children: [{ id: '2_1', name: 'xxx', state: 0, createTime: '2019/11/18 10:44:00', children: [] }] }]; ``` 字段名字也可以自定義: ```javascript treeTable.render({ tree: { openName: 'open', // 自定義默認展開的字段名 } }); ``` ## 7.1.10.事件監聽 :id=event 監聽工具條點擊事件: ```javascript treeTable.on('tool(test)', function(obj){ var data = obj.data; // 獲得當前行數據 var event = obj.event; // 獲得lay-event對應的值 obj.del(); // 刪除對應行,并更新緩存 // 同步更新緩存對應的值 obj.update({ username: '123', title: 'xxx' }); }); ``` 監聽復選框選擇: ```javascript treeTable.on('checkbox(test)', function(obj){ console.log(obj.checked); // 當前是否選中狀態 console.log(obj.data); // 選中行的相關數據 console.log(obj.type); // 如果觸發的是全選,則為:all,如果觸發的是單選,則為:one }); ``` 監聽單元格編輯: ```javascript treeTable.on('edit(test)', function(obj){ console.log(obj.value); //得到修改后的值 console.log(obj.field); //當前編輯的字段名 console.log(obj.data); //所在行的所有相關數據 }); ``` 監聽行單雙擊事件: ```javascript // 監聽行單擊事件 treeTable.on('row(test)', function(obj){ console.log(obj.tr) //得到當前行元素對象 console.log(obj.data) //得到當前行數據 // obj.del(); // 刪除當前行 // obj.update(fields) // 修改當前行數據 }); // 監聽行雙擊事件 treeTable.on('rowDouble(test)', function(obj){ // obj 同上 }); ``` 監聽單元格單雙擊事件: ```javascript // 監聽行單擊事件 treeTable.on('cell(test)', function(obj){ console.log(obj.field); //當前單元格的字段名 console.log(obj.data) // 得到當前行數據 }); // 監聽行雙擊事件 treeTable.on('cellDouble(test)', function(obj){ // obj 同上 }); ``` ## 7.1.11.其他方法 :id=other ```javascript // pid形式數據轉children形式數據 treeTable.pidToChildren(data, idName, pidName, childName); ``` ## 7.1.12.實例方法 :id=method ```javascript var insTb = treeTable.render({ }); // 刷新 insTb.reload(options); // 重載表格 insTb.refresh(); // 刷新(異步模式) insTb.refresh(id); // 刷新指定節點下的數據 insTb.refresh(id, data); // 刷新指定節點下的數據為data // 復選框 insTb.checkStatus(); // 獲取選中數據 insTb.setChecked(['1','2']); // 設置選中數據 insTb.removeAllChecked(); // 移除全部選中 // 折疊/展開 insTb.expand(id); // 展開指定節點 insTb.fold(id); // 折疊指定節點 insTb.expandAll(); // 展開全部 insTb.foldAll(); // 折疊全部 // 搜索 insTb.filterData('keywords'); // 根據關鍵字模糊搜索 insTb.filterData(['1','2']); // 根據id搜索 insTb.clearFilter(); // 清除搜索 // 更新數據(只更新數據,不更新界面) insTb.del(id); // 根據id刪除 insTb.update(id, fields); // 根據id更新 ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看