easy ui 复杂多表头报表设计思路
做一个报表,一次性加载所有的数据,里面的业务逻辑比较复杂,多表头,动态列,合并行,行合计,列小计(每个模块的总和),列合计
思路:
1.首先生成表头,获取表头数据
2. 获取板块和公司数据
3. 获取动态列数据
4. 获取动态列单项小计
5. 获取动态列合计
这样便完成了多表头,动态列,行合计
6. 合并行
7. 列小计
使用下面方式
$('#dg').datagrid('insertRow',index{ });
思路:
这个小计是怎样算出来,会有个索引,首获取行数据com列表,列表根据板块排序,相同的行会合并,先用列表的第一条数据跟第二条数据对比,如果不是同一板块的,会插入小计,继续对比,如果第二条数据跟第三条数据不一样,再插入,计算从上一个小计索引加1开始计算,当行数等于小计索引index时候跳出循环,类推
8. 列合计
$('#dg').datagrid('appendRow', jsonData);
9. 数据量大,报表无滚动条,只有页面滚动条
首先去掉页面滚动条
<body style="overflow-y:hidden";>
给datagrid绑定onLoadSuccess事件,当加载成功后调用datagrid的resize方法
$("#dg").datagrid("resize",{ height: 16*36 // 行高*行数 });
10. 加载数据缓慢,特别请注意
datagrid,不能加载多次,这样会导致打开页面前端十分缓慢,我之前就是犯了这个严重的错误,for循环加载了datagrid,当数据量大的时候,每次都去加载,导致前端页面加载了两分钟才出来,另外需要删除html中的class声明(class="easyui-datagrid")。
例子模板