bootstrapTable-treeView
bootstrapTable-treeView copied to clipboard
没法分页怎么办
用了树状表格。。怎么分页
树结构是不支持分页的。
想要分页的话要重新实现分页方法,
提供一个思路就是先查询出所有数据,然后根据一级节点进行分页。
原始的分页配置不适用在分页上。
在bootstrapTable-treeview.js的initBody方法中大概415行左右位置加上以下代码,实现了页面按照父节点分页
` /*重写分页方法*/
var parentNum = 0,//标志,用于计算父节点数量
start = 0,//开始位置
end = 0,//结束位置
length = 0;//父节点长度
for(var k = 0;k<data.length;k++){
if(data[k].parentId == null||data[k].parentId==""){
length += 1;
}
}
for(var i = 0;i<data.length;i++){
if(data[i].parentId == null){
parentNum += 1;
if(parentNum == ((this.options.pageNumber - 1) * this.options.pageSize + 1)){
start = i;
break;
}
}
}
if(parentNum+this.options.pageSize - 1 > length){
end = data.length;
}else{
var j = start+1
for(j;j<data.length;j++){
if(data[j].parentId == null){
parentNum += 1;
if(parentNum == (this.options.pageNumber * this.options.pageSize + 1)){
end = j;
break;
}
}
}
}
this.pageFrom = start+1;
this.pageTo = end;`
在bootstrap-table.js的initPagination方法中在给 this.options.totalRows赋值的语句后(1319行左右)加上以下代码,实现总页数按照父节点的长度配置。
if(this.options.treeView){
var length = 0;//父节点长度
for(var k = 0;k<data.length;k++){
if(data[k].parentId == null||data[k].parentId==""){
length += 1;
}
}
this.options.totalRows = length;
}
checkbox还是有问题。。。 本人刚参加工作的菜鸟有问题请轻饶。。 啊,还有。。bootstrapTable-treeview.js设置的默认分页为false,请改为true。。。
分页只能根据一级节点进行分页,而且不能后台分页。
想要支持后台分页的话必须改造后台方法,通过page参数查询的必须是一级节点的数据。
这个与业务相关性比较大,需要再具体项目中进行扩展。