最终用了slickGrid来做这个.pinpoint用的同款
官网地址:https://github.com/mleibman/SlickGrid/wiki/Examples
链接:[slickGrid gitHub地址]
(https://github.com/mleibman/SlickGrid/wiki/Examples)
树形结构的例子:树形结构的官方例子
代码:
引入依赖包:
// jquery.event.drag-2.2.js 依赖jQuery 1.7 版本
<script type="text/javascript" src="js/jquery/jquery-1.7.min.js">script>
<script type="text/javascript" src="/js/jqueryui/jquery-ui-1.8.16.custom.min.js">script>
<script type="text/javascript" src="js/slickGrid/jquery.event.drag-2.2.js">script>
// - 需要什么功能,引入js模块
<script type="text/javascript" src="js/slickGrid/slick.core.js">script>
// 点击选中行的事件需要的三个js,不是tree必须的
<script type="text/javascript" src="js/slickGrid/slick.cellrangeselector.js">script>
<script type="text/javascript" src="js/slickGrid/slick.cellselectionmodel.js">script>
<script type="text/javascript" src="js/slickGrid/slick.rowselectionmodel.js">script>
<script type="text/javascript" src="js/slickGrid/slick.grid.js">script>
<script type="text/javascript" src="js/slickGrid/slick.dataview.js">script>
// 放treeTable的盒子
<table id="treeTable" style="width:100%;height:550px;">table>
treeTable:function(data){
// 缩进和图标
var TaskNameFormatter = function (row, cell, value, columnDef, dataContext) {
var spacer = "";
var idx = dataView.getIdxById(dataContext.id);
if (data[idx + 1] && data[idx + 1].indent > data[idx].indent) {
if (dataContext._collapsed) {
return spacer + " " + value;
} else {
return spacer + " " + value;
}
} else {
return spacer + " " + value;
}
};
// 进度条格式化,这里可以直接引用slickGrid的pagination.我这里需要显示两个进度条,所以自己写了
var progressFormatter = function (row, cell, value, columnDef, dataContext) {
if( dataContext.execTime ){
var detailHtml = ''+
' '+
' '+
' ';
}else{
var detailHtml =''
// ' '+
// '
碎碎念:项目表格一直用的是boost rap-table来做的,需要做一个树形结构的表格,就用了轻量级的treeGrid,贼方便,直接在原来的boostrap-table里面加两行代码就大功告成了.
当然,后来为我这个偷懒付出了一定的代价哈.因为数据比较大,500多条的很正常,treeGrid的弊端就出现了,加载特别的慢.大概要5,6分钟,之后浏览器还可能被卡死.网上找了不少,对于这样大两数据卡顿没有特别有效的方法.
涨姿势:在用某个插件或者框架的时间,除非很了解了,否则最好查一下这个东西的优缺点,和了解一下项目需求.减少返工
写的有点乱,不清除的地方,欢迎留言