EAS Cloud (数据行融合实现)
行融合功能实现
- 实现方式
- 加载整个表格的数据
- 加载完成后,获取全部 作为融合判断依据的列的数据
- 通过td的 rowspan 属性 设置该行的显示占用的行数
- 将融合的其他行 通过 hidden 属性 隐藏
``` js
IndexAssess_loadComplete:function(data){
var dimension=waf("#select").wafSelect("getValue");
//如果查询维度为项目
if(dimension==1){
//列名 区域 b1A c1B c1A
var columns=["project"];
//调用融合函数 参数 表格ID 融合判断依据 需要融合的列
_private.mergeTable("editgrid","project",columns);
//如果查询维度为分期 dimension = 2
}else{
var columns=["project"];
//调用融合函数 参数 表格ID 融合判断依据 需要融合的列
_private.mergeTable("editgrid","project",columns);
}
}
////////////////////////////////////行融合开始//////////////////////////////////
////////////////////////////////////行融合开始//////////////////////////////////
////////////////////////////////////行融合开始//////////////////////////////////
mergeTable: function(tableKey, key, columns) {
//此列值相同,则合并
//获取 表格中 列名为Key 的这一列的全部的值
var columnKeyValues = waf('#' + tableKey).wafGrid('getColValue', key, true);
var count = 0;
if (columnKeyValues.length <= 1) {
return;
}
//将rootID赋值为 处理为 判断依据
var rootId = columnKeyValues[0].value;
if (typeof(rootId) == 'object') {
//pxh-20190328
if (rootId.id != null) { //对象
rootId = rootId.id;
} else { //枚举
rootId = rootId.value;
}
}
//融合行的起始 行ID
var beginRowId = columnKeyValues[0].id;
for (var i = 0; i < columnKeyValues.length;) {
// 处理 对比的列数据
var keyValue = columnKeyValues[i];
var compareValue = keyValue.value;
if (typeof(compareValue) == 'object') {
if (keyValue.value.id != null) {
compareValue = keyValue.value.id;
} else {
compareValue = keyValue.value.value;
}
}
//判断是否相等
if (rootId == compareValue) {
//需要融合的行数
count++;
// 游标的移动
i++;
// 如果遍历完成
if (i == columnKeyValues.length) {
//执行一次 融合行
_private.mergeRowCells(beginRowId, columns, count, tableKey);
}
} else {
//如果判断到不等的情况 则将之前的行进行一次融合
_private.mergeRowCells(beginRowId, columns, count, tableKey);
//并将count 重置为 0
count = 0;
var index = i;
//如果没有遍历结束
if (index < columnKeyValues.length) {
//重置 开始行 id
beginRowId = columnKeyValues[index].id;
// 重置新的比较依据
rootId = columnKeyValues[index].value;
if (typeof(columnKeyValues[index].value) == 'object') {
if (columnKeyValues[index].value.id != null) {
rootId = columnKeyValues[index].value.id;
} else {
rootId = columnKeyValues[index].value.value;
}
}
}
}
}
},
// 开始行ID 融合列列名数组 融合行数量 编辑表格ID
mergeRowCells: function(rowId, columnNameArray, rowspan, tableKey) {
//一列一列的 合并
for (var i = 0; i < columnNameArray.length; i++) {
_private.mergeRowCell(rowId, columnNameArray[i], rowspan, tableKey);
}
},
// 合并单列 合并列列名
mergeRowCell: function(rowId, columnName, rowspan, tableKey) {
//获取开始合并的td
if (!tableKey) {
tableKey = _self.getEntryTableKey();
}
var td = waf('#' + tableKey).wafGrid('getCellObject', rowId, columnName);
if (!rowspan) {
rowspan = 0;
}
//融合行数
waf(td).attr('rowspan', rowspan);
var beginRowIndex = waf('#' + tableKey).wafGrid('getRowIndex', rowId) + 1;
//从下一行开始,隐藏td
for (var i = 0; i < rowspan - 1; i++) {
var nextRowId = waf('#' + tableKey).wafGrid('getRowId', beginRowIndex);
var td = waf('#' + tableKey).wafGrid('getCellObject', nextRowId, columnName);
waf(td).hide();
beginRowIndex = beginRowIndex + 1;
}
}
/////////////////////////////////////行融合结束///////////////////////////////////
/////////////////////////////////////行融合结束///////////////////////////////////
/////////////////////////////////////行融合结束///////////////////////////////////
```
EAS Cloud (数据行融合实现)
行融合功能实现- 实现方式 - 加载整个表格的数据 - 加载完成后,获取全部 作为融合判断依据的列的数据 - 通过td的 rowspan 属性 ...
点击下载文档
本文2024-09-16 22:02:09发表“eas cloud知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-eas-45514.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章