首页 > Web开发 > 详细

handsometable学习(4)——具体使用

时间:2019-05-08 10:03:40      阅读:587      评论:0      收藏:0      [点我收藏+]

本文以注释的方式标明了各个属性的功能。

(如果引用的js或者css不能使用了,可自己下载之后引用本地的js和css)

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>handsometable测试</title>
        <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/handsontable@7.0.2/dist/handsontable.full.min.css" />
    </head>
    <body>
        <div id="example"></div>

        <script src="https://cdn.jsdelivr.net/npm/handsontable@7.0.2/dist/handsontable.full.min.js"></script>
        <script type="text/javascript">
            var objectData = [{
                        id: 1,
                        name: Ted Right,
                        address: 重庆,
                        content: 其它
                    },
                    {
                        id: 2,
                        name: Frank Honest,
                        address: 北京,
                        content: 其它
                    },
                    {
                        id: 3,
                        name: Joan Well,
                        address: 天津,
                        content: 其它
                    },
                    {
                        id: 4,
                        name: Gail Polite,
                        address: 内蒙,
                        content: 其它
                    },
                    {
                        id: 5,
                        name: Michael Fair,
                        address: 黑龙江,
                        content: 其它
                    },
                ],
                container = document.getElementById(example);
            
            //通过 JSON.parse(JSON.stringify(object)) 的方式,将数据的副本绑定到handsometable,这样handsometable改变数据的时候,不会影响到数据源,只会影响到副本
            var dataCopy=JSON.parse(JSON.stringify(objectData));

            var hot = new Handsontable(container, {
                //调用handsometable的绑定数据的方式是: hot.getData()
                data: dataCopy,
                //定义数据源为空时,handsometable的数据格式
                dataSchema: {
                    id: null,
                    name: null,
                    address: null,
                    content: null
                },
                colWidths: 300, //列宽
                rowHeights: 83, //行高
                //通过定义width和height来决定容器的宽和高,当内容超出时,便会显示滚动条
                height: 450,
                width: 50%,
                //通过设置fixedRowsTop来决定滚动时,锁定的行;通过设置fixedColumnsLeft来决定滚动时,锁定的列
                fixedColumnsLeft: 2,
                //设置列名
                colHeaders: [‘‘, 姓名, 地址, 备注],
                //设置显示行索引
                rowHeaders: true,
                //许可秘钥
                licenseKey: non-commercial-and-evaluation,
                //留出一行空白,用作新增
                minSpareRows: 1,
                //隐藏的列索引 例:columns:[0,1,2],隐藏0,1,2三列
                //如果需要显示隐藏列的位置标识,可以在hiddenColumns中加上 indicators: true
                hiddenColumns: {
                    columns: [0]
                },
                //className用作定义表格的对齐方式,多个值用空格隔开
                //水平方向上的值: htLeft, htCenter, htRight, htJustify
                //垂直方向上的值: htTop, htMiddle, htBottom
                className: "htCenter htMiddle",
                //定义列和数据源的映射关系和一些其它属性
                columns: [
                    {
                        data: id
                    },
                    {
                        data: name,
                        // readOnly: true //定义为只读列
                    },
                    {
                        data: address
                    },
                    {
                        data: content
                    },
                ],
                //当table数据发生改变的相应事件
                afterChange: function(change, source) {
                    //change[0]是一个数组,第一个值是行索引/行名,第二个值是列索引/列名,第三个值是修改前的值,第四个值是修改后的值
                    //source的值目前知道:loadData(加载数据);edit(新增或编辑)
                    if (source === loadData) {
                        return;
                    }
                    
                    //如果修改的列是ID列,不作处理,防止进入死循环
                    if(change[0][1]==id){
                        return;
                    }
                    if (dataCopy[change[0][0]].id==null) {
                        console.log("新增");
                        //生成新列的ID
                        let mId=new Date().getTime();
                        hot.setDataAtCell(change[0][0],0,mId);
                        console.log("新ID:"+mId);
                    } else {
                        console.log("修改了ID为:" + dataCopy[change[0][0]].id + "的数据,值由" + change[0][2] + "修改为:" + change[0][3]);
                    }
                }
            });
        </script>
    </body>
</html>

这里只演示了一些常见的功能,更多功能请参考官网API:https://handsontable.com/docs/7.0.2/tutorial-quick-start.html

handsometable学习(4)——具体使用

原文:https://www.cnblogs.com/lkc9/p/10830067.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!