bootstrap树形表格渲染慢_layUI之树状表格异步加载组件
treetableAsy。。。
概述
后台框架中使⽤树状表格是⾮常常⽤的操作,layUI本⾝并没有这种组件。 第三⽅的treetable.js做到了完美的实现,但是不能实现在双击时异步加载数据,本⽂就是站在了巨⼈的肩膀上实现的异步加载的树状表格~
1. 使⽤说明
本组件基于treetable.js组件进⾏编写,最⼤的区别在treetable.js⽆法进⾏异步加载,⽽本组件则使⽤异步加载树状表格。 因此,若⽆异步加载需求,建议直接使⽤treetable.js,有异步加载需求时,可使⽤本组件。
由于treetable.js的源码进⾏过修改,因此不能使⽤官⽅下载的原版本(如需使⽤,可私聊作者获取)
2. 使⽤需知
2.1 本组件依赖于treetable.js【重中之重】
由于本组件依赖于treetable.js,因此使⽤本组件时,需⾸先引⼊treetable.js,⽅可使⽤。 但由于treetable.js的源码进⾏过修改,因此
但由于treetable.js的源码进⾏过修改,因此不能使⽤官⽅下载的原版本(如需使⽤,可私聊作者获取)。 代码⽰例:
不能使⽤官⽅下载的原版本(如需使⽤,可私聊作者获取)。
base: '../../common/'
}).extend({
index: 'lib/index',
treetable: "../lib/extend/treetable", // 使⽤异步加载treetableAsync,必须先引⼊treetable
treetableAsync : '../lib/extend/treetableAsync'
})
2.2 本组件基于layUIAdmin进⾏使⽤
本组件使⽤中的Ajax请求,基于layUIAdmin的q()进⾏。 如果不使⽤layUIAdmin,需要⾃⾏调整源码。
2.3 本组件的⽅法⽀持treetable.js的所有⽅法;
本组件中所⽤的所有⽅法,均基于⽀持treetable.js中所使⽤的⽅法,因此在treetable.js中可以调⽤的⽅法,均可使⽤treetableAsync调⽤。 例如:
// 等同于
2.4 本组件不⽀持的其他⽅法,均可使⽤layui-table组件的⽅法。
本组件及treetable.js所不⽀持的⽅法,均可使⽤layUI原⽣的数据表格组件的相应⽅法。 本组件不⽀持列表的toolbar操作,则可以使⽤table原⽣的事件监听:
//列表操作
<('tool(dataList)', function (obj) {
})
2.4 组件源码
本组件源码附上,⼤家有疑问可以评论留⾔。
layui.define(['index','form','treetable','jquery','treetable'],function(exports){
var treetable = able,
table = layui.table,
form = layui.form,
$ = layui.jquery,
setter = layui.setter,
view = layui.view,
admin = layui.admin;
var tableData = [];
var treetableAsync = {
render : function(param){
var provincesUrl = param.url;
function init(id){
url: provincesUrl + id,
type:"get",
success:function(r){
param.data = tableData = r.data;
tableInit();
}
});
}
Spid);
// 渲染表格
function tableInit(){
}
$("body").on('dblclick','.layui-table-body .layui-table tr',function(){
var top = $('.layui-table-body').scrollTop();
var pid = $(this).find('div[class$="'+IdName+'"]').text();
var index = $(this).index();
url: provincesUrl + pid,
type:"get",
success:function(r){
var isInit = false;
for(var i=0; i<r.data.length; i++){
var isPush = true;
for(var j=0; j<tableData.length; j++){
if(r.data[i][IdName] == tableData[j][IdName]){
isPush = false;
}
}
if(isPush){
tableData.push(r.data[i]);
isInit = true;
}
}
if(isInit){
param.data = tableData;
tableInit();
expandSelfAndParent(index);
$('.layui-table-body').scrollTop(top);
}
}
});
});
function expandSelfAndParent(index){
var j = -1;
for(var i=0; i<trs.length; i++){
if($(trs[i]).find('.treeTable-icon').attr('lay-tid') == tpid){
j=i
}
break;
}
}
if(j != -1){
init(j)
}
}
},
toggleRows:function($dom, linkage){
},
getEmptyNum:function(pid, data){
},
checkParam:function(param){
treetable.checkParam(param);
},
expandAll:function(dom){
},
foldAll:function(dom){
treetable.foldAll(dom);
}
}
exports('treetableAsync', treetableAsync);
})
初次之外,本组件所有⽅法属性,均与treetable.js完全相同,请熟读treetable.js的帮助⽂档。【附】⾮异步加载的treetable.js使⽤⽅式
实现layui的树形表格treeTable
1.简介
在layui数据表格之上进⾏扩展实现。
演⽰地址:whvse.gitee.io/treetable-lay/
还有⼀个BOM表结构的树形表格,树形表格2,欢迎查看。
2.使⽤⽅法
2.1.引⼊模块
下载module/treetable-lay整个⽂件夹,放在你的项⽬⾥⾯,然后使⽤模块加载的⽅式使⽤:
base: 'module/'
}).extend({
treetable: 'treetable-lay/treetable'
}).use(['treetable'], function () {
var treetable = able;
});
2.2.渲染表格
<table id="table1" class="layui-table" lay-filter="table1"></table>
<script>
layui.use(['treetable'], function () {
var treetable = able;
// 渲染表格
treeColIndex: 2, // treetable新增参数
treeSpid: -1, // treetable新增参数
treeIdName: 'd_id', // treetable新增参数
treePidName: 'd_pid', // treetable新增参数
treeDefaultClose: true, // treetable新增参数
treeLinkage: true, // treetable新增参数
elem: '#table1',
url: 'json/data1.json',
cols: [[
{type: 'numbers'},
layui下载{field: 'id', title: 'id'},
{field: 'name', title: 'name'},
{field: 'sex', title: 'sex'},
{field: 'pid', title: 'pid'},
]]
});
});
</script>
注意: 可以使⽤url传递数据,也可以使⽤data传递数据,如果使⽤url传递数据,参数是where字段, 跟layui数据表格的使⽤⽅式⼀致。
数据格式
总⽽⾔之就是以id、pid的形式,不是以subMenus的形式,当然id、pid这两个字段的名称可以⾃定义:
{
"code": 0,
"msg": "ok",
"data": [{
"id": 1,
"name": "xx",
"sex": "male",
"pid": -1
},{
"id": 2,
"name": "xx",
"sex": "male",
"pid": 1
}
]
}
2.3.参数说明
layui数据表格的所有参数都可以⽤,除此之外treetable新增的参数有:
参数类型是否必填描述treeColIndexint是树形图标显⽰在第⼏列treeSpidobject是最上级的⽗级idtreeIdNamestring否id字段的名称treePidNamestring否pid字段的名称treeDefaultCloseboolean否是否默认折叠treeLinkageboolean否⽗级展开时是否⾃动展开所有⼦级
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论