• js的Handsontable表格的使用说明,如何增加格子样式


    最近使用到了html和js的表格插件Handsontable,


    例子代码如下

    var hot=new Handsontable(table_div, {
            data: null,//表格数据  一般是二维数组[[]]
            colHeaders: true,//显示列头
            rowHeaders: true,//显示行头
            manualColumnResize: true,//控制列的大小
            manualRowResize: true,//控制行的大小
            colWidths: Handson_colWidths,//列宽度 可以指定一个数字、数组、函数
            rowHeights: Handson_rowHeights,//行高度  同上
            startCols: 5,//起始列数  数据data为null有效
            startRows: 5,//起始行数
            contextMenu: true,//显示右键菜单
             580, //表宽 多余自动显示滚动条
            height: 320,//表高
            mergeCells: [],//数组 格子合并对象{row,col,rowspan,colspan}
            afterBeginEditing: afterBeginEditing,//开始编辑
            language: 'zh-CN',//中文显示
            renderer: Handson_renderer,//渲染
            outsideClickDeselects: outsideClickDeselects, //点击其他地方触发
            afterRender:afterRender,//完成渲染以后
        });
    

      

    以上是示例代码,说明如下 
    table_div一般是一个div对象 用 document.getElementById('div的ID')获取

    选项特别说明: 
    data:一般使用二维数组,格子的样式可以使用另一个对象使用。 
    manualColumnResize:控制列的大小,要配合colHeaders显示以后才好调整,比如需要设计一个表格,设计的时候需要调整行列大小,设计完成使用的时候可以不需要,有点像制作各种报表。 
    colWidths: Handson_colWidths 这里写成函数比较好控制。

    function Handson_colWidths(col) {
            var tt = dataStyle.colWidths[col];//dataStyle 数据样式。
            return tt || 100;//没有设置的时候默认一个
     }
    

      

    mergeCells :合并后的格子 {row,col,rowspan,colspan} rowspan合并的行数 
    afterBeginEditing:编辑格子触发以后调用

    function afterBeginEditing(row, col) {
            var editobj = hot.getActiveEditor();//当前编辑的对象
            var nowcell = editobj.TD; //当前编辑的格子
            editobj.textareaStyle.color = nowcell.style.color;//获取当前编辑格子的颜色
            nowcell.innerhtml = ""; //这个主要是解决上面颜色透明的问题
            //其他样式自由添加
    }
    

      

    outsideClickDeselects:点击格子以外的地方会触发 默认是自动取消选择的格子

    function outsideClickDeselects(htmlEle) {
            if(htmlEle) {
                var i = 0;
                var nowele = htmlEle;
                while(i < 5 && nowele) {
                    i++;
                    if(nowele.id == "paintcolor") {
                        return false;//点击颜色选择的时候不需要取消
                    }
                    nowele = nowele.parentNode;
                }
            }
            return true;//取消
    }
    

      

    renderer: 渲染

    function Handson_renderer(instance, td, row, col, prop, value, cellProperties) {
        Handsontable.renderers.TextRenderer.apply(this, arguments);
        //以下只是设置格子的样式 color,backgroundColor,textAlign,fontSize等css样式都可以使用,大家自由发挥 背景还可以透明"transparent"
        var allstyle = dataStyle["all"];//获取全局样式
        var tconf = {}; //当前样式
        for(var sty in allstyle ) {
            tconf[sty] = allstyle [sty];//拷贝全局样式
        }
        var cellconf = dataStyle.cells[row + "_" + col];//获取指定格子的样式
        if(cellconf) {
            for(var sty in cellconf) {
                if(cellconf[sty]) {
                    tconf[sty] = cellconf[sty];
                }
            }
        }
        for(var sty in tconf ) {
            td.style[sty] = tconf[sty];
        }
    }
    

      

    资源网站大全 https://55wd.com 我的007办公资源网站 https://www.wode007.com

    afterRender:渲染以后,这个一般不需要。这个方法会调用多次,比如第一次完成表格渲染后会导致重新排列或者是合并格子就又会渲染一次。 
    本人使用这个方法是需要表格生成图片,使用html2canvas

    var isdraw=false;
    afterRender: function() { //完成渲染以后 可能会多次
                if(!isdraw) {//防止调用多次
                    isdraw = true;
                    setTimeout(function() {//间隔调用  渲染多次也会很快结束 延迟下即可
                        html2canvas(outdiv, {
                            backgroundColor: null, //透明
                            useCORS: true,
                            scale: 2
                        }).then(function(canvas) {
                            var Pic = canvas.toDataURL("image/png");
                        });
                    }, 200);
                }
            }
    

      

    以上就是使用Handsontable一些心得。

  • 相关阅读:
    【通知】OK6410开发板新加5张国嵌linux视频教程光盘
    请wince驱动调试助手的作者sunrain_hjb以及wince开发者进来看看
    【学习】关于wince5.0 的.net 框架学习——.NET Compact Framework OS Design Development
    【ARM11开发板】飞凌OK6410 开发板原厂光盘资料发布更改通知
    关于wince6.0和wince5.0 驱动的位置问题
    nand flash结构以及读写分析——写的比较经典(转载)
    【转载经典】反省研发工程师的发展之路.你属于哪一种?
    【讨论】初学者拿到2440、6410 等开发板应该怎么学习?
    为啥一个晶振都要一两块钱一个?还是国产的呢?!
    【原创】关于mobile 和wince系统定制开发的最大区别
  • 原文地址:https://www.cnblogs.com/ypppt/p/13325332.html
Copyright © 2020-2023  润新知