handsontable合并项mergeCells应用及扩展-程序员宅基地

技术标签: ViewUI  javascript  

由于我这个项目主要是配置多表头信息,主要使用了handsontabel合并项功能。

但是,在该功能使用过程中发现了一些问题和一些自己根据需要做的一些扩展


    $("#topFieldDiv").handsontable({
        data: data,
        colHeaders: colHeadArr,//设置列头
        manualRowResize: true,//自定义行宽
        manualColumnResize: true,//自定义列高
        manualColumnMove: true,//是否能拖动列
        //manualRowMove: false,//是否能拖动行
        columnSorting: false,//false/对象 //当值为true时,表示启用排序插件
        //rowHeaders: false,//是否显示行数字
        contextMenu: true,//右键显示更多功能,
        columns: cols,
        autoColumnSize: true,
        mergeCells: setmergeCells //加载合并项。变量名setmergeCells不能与mergeCells命名一样
    });
这里特别说明下:变量名setmergeCells不能与mergeCells命名一样。一开始变量名取为 mergeCells,没有加载出合并项 被坑了一下

一、获取合并项信息mergeCells.mergedCellInfoCollection

var $container = $("#topFieldDiv");
var handsontable = $container.data('handsontable');//获取当前handsontable

var data = handsontable.getData();//获取所有值
var mergeCellArr = handsontable.mergeCells.mergedCellInfoCollection;//获取合并项目

对handsontabel进行了一系列的合并操作之后,可以通过 xx.mergeCells.mergedCellInfoCollection获得合并项结果。

mergedCellInfoCollection为一个集合,格式如下:

[{"row":0,"col":0,"rowspan":1,"colspan":3},{"row":0,"col":3,"rowspan":1,"colspan":3},{"row":0,"col":6,"rowspan":1,"colspan":3}]
View Code

二、扩展方法 IsMergeMainCell(判断是否为合并单元格主项)

//判断是否为合并单元格主项
//i->行坐标
//j->列坐标
//mergeCellArr->合并项集合
function IsMergeMainCell(i, j, mergeCellArr) {
    var bool = false;

    if (mergeCellArr != null && mergeCellArr.length > 0) {
        for (var k = 0; k < mergeCellArr.length; k++) {
            var curMerCell = mergeCellArr[k];
            if (i == curMerCell.row && j == curMerCell.col) {
                bool = true;
                break;
            }
        }
    }
    return bool;
}
View Code

三、扩展方法 GetParentName (获取单元格的合并项父级的值)

//获取单元格的合并项父级的值
//i->行坐标
//j->列坐标
//mergeCellArr->合并项集合
//handsontable->
function GetParentName(i, j, mergeCellArr, handsontable) {
    var parentName = "";
    if (mergeCellArr != null && mergeCellArr.length > 0) {
        for (var k = 0; k < mergeCellArr.length; k++) {
            var curMerCell = mergeCellArr[k];
            if (curMerCell.row <= i && i <= (curMerCell.row + curMerCell.rowspan - 1) &&
                curMerCell.col <= j && j <= (curMerCell.col + curMerCell.colspan - 1)) {
                parentName = handsontable.getDataAtCell(curMerCell.row, curMerCell.col);
                break;
            }
        }
    }
    return parentName;
}
View Code

四、对表格经历了一番合并、行的删除之后,再次获得合并项集合时,会出现已删除的行合并项仍然存在,与实际合并项信息混杂一起难以区分。

对原生handsontabel的删除行(remove_row)方法做了修改:在每次删除行的同时,从合并项集合中清理掉属于该删除行的合并项。修改内容如下:

 

转载于:https://www.cnblogs.com/senyier/p/7298167.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_34221773/article/details/93953101

智能推荐

接口自动化入门:Jmeter的多组数据测试、JDBC驱动及数据断言!-程序员宅基地

文章浏览阅读914次,点赞8次,收藏7次。在进行接口测试时,我们经常需要对接口进行多组数据测试,以验证接口在不同输入条件下的表现。同时,我们也需要对接口返回的数据进行断言,以确保接口返回的数据符合预期结果。JMeter正是一个强大的工具,可以帮助我们实现这些需求。

RuoYi-Vue-Plus(登录流程-验证码生成)_ruoyi-vue-plus百度网盘-程序员宅基地

文章浏览阅读135次。1- 进入登录页面,调用 com.ruoyi.web.controller.common.CaptchaController 类中的captchaImage 方法,2- 提交 登录信息 + 验证码 + uuid 比对错误:返回错误信息,删除缓存的验证码,加入缓存。_ruoyi-vue-plus百度网盘

Java使用pdf模板生成pdf文件_java根据pdf模板生成pdf-程序员宅基地

文章浏览阅读9.1k次,点赞11次,收藏35次。有时候,业务中我们需要使用pdf模板生成一份pdf文件。如何生成pdf文件?如下,我们把左侧的模板生成为右侧的填充文件。_java根据pdf模板生成pdf

150408-83-6,TAMRA-NHS,TAMRA-SE能与蛋白质上的氨基反应-程序员宅基地

文章浏览阅读386次,点赞8次,收藏7次。CAS:150408-83-6|英文名称:TAMRA-NHS,TAMRA-SE|中文名称:5(6)-羧基四甲基罗丹明琥珀酰亚胺酯,四甲基罗丹明活性酯。TAMRA maleimide,6-isomer,6-TAMRA-mal 四甲基罗丹明-马来酰亚胺,6-异构体。TAMRA maleimide,5-isomer,四甲基罗丹明-马来酰亚胺,5-异构体。TAMRA-PEG4-Tetrazine,四甲基罗丹明-四聚乙二醇-四嗪。TAMRA amine,5-isomer,四甲基罗丹明-氨基,5-异构体。

客户端jQuery操作json_如何在客户端操作jquery代码-程序员宅基地

文章浏览阅读3.5k次。经常性的会模糊json格式的指定,时间一长很容易忘记,而且在客户端编程当中也非常容易出现错误,并且很难找出其中错在何处。这一切都归结于对json格式的定义不是十分清楚,今天很幸运看到了http://www.ruanyifeng.com/blog/2009/05/data_types_and_json.html这篇文章,其中对于json格式的定义非常清楚。摘了下面一段:Json的规格非常简单_如何在客户端操作jquery代码

记录ENVI5.6和SARscape5.6.2处理时遇到的问题_envi轨道数据放哪-程序员宅基地

文章浏览阅读2.4k次,点赞22次,收藏39次。可能是因为外接了显示屏,使用了HDMI线。处理方法是先将HDMI拔掉,再将ENVI启动,启动后再将HDMI线进行连接。一、ENVI5.6启动时显示"illegal keywaord value for YSIZE"二、ENVI5.6闪退。_envi轨道数据放哪

随便推点

css cursor鼠标指针光标样式default pointer hand url_cursor:url c++-程序员宅基地

文章浏览阅读1.5k次。Css cursor鼠标指针鼠标光标样式教程篇我们在DIV CSS布局时候,我们会遇到对对象内鼠标指针光标进行控制,比如鼠标经过指针变为手指形状等样式,接下来我们介绍鼠标指针样式cursor控制。系统默认鼠标指针样式外,可以通过CSS设置图片为鼠标指针,常见有些网站鼠标指针是各种各样小图片样式,当然这个是通过css cursor设置鼠标样式。扩展阅读:css指针一、cursor语法_cursor:url c++

Html结构解析-程序员宅基地

文章浏览阅读2.6k次,点赞7次,收藏48次。一、html文档树状图结构  1)html树状图2)html代码解释树形图<!DOCTYPE html> <!--声明--><html lang="en"> <!--html开始--><head> <!--头部开始--> <..._html页面可以解析为什么结构

Pixhawk解锁常见错误_rc throttle not configured-程序员宅基地

文章浏览阅读4.4k次,点赞2次,收藏50次。这个我看写得还挺不错的,终于有人比较全地总结一下了。摘自:http://www.paopaola.com/m/news/notice/3571899352.htmlPixhawk解锁常见错误2019-06-08 09:03:52点击:995第一次解锁,接上MP看着HUD的提示,即飞行数据的界面:一般的不成功解锁有以下的原因(网络整理)(1)HUD显示“RC not calibrated”:没有成功进行校正遥控器,需要校正遥控器。(2)HUD显示“C..._rc throttle not configured

/usr/lib/x86_64-linux-gnu/libQt5Core.so.not found的解决办法-程序员宅基地

文章浏览阅读893次。原因是ros在安装的时候,也安装了一些qt的依赖库,位于/usr/lib/x86_64-linux-gnu/路径。删掉这些库,用自己安装的库替换掉即可。_x86_64-linux-gnu

Prometheus监控神器-Alertmanager篇(二)-程序员宅基地

文章浏览阅读1.5k次。Docker 技术鼻祖系列本章主要对如何使用开源组件和Alertmanager组件集成警报通知。Kubernetes的警报集成后续会直接在配置文件讲解,原理大同小异,此处仅对相关警报通知..._alertmanager-wechatrobot-webhook

对于batch_size的一些个人看法_batch size越大收敛越慢-程序员宅基地

文章浏览阅读2.7k次。看到知乎上有人讨论batch_size的大小带来的影响,在这里进行一下总结https://www.zhihu.com/question/32673260_batch size越大收敛越慢