zoukankan      html  css  js  c++  java
  • handsontable学习(4)——具体使用

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

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

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>handsontable测试</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)) 的方式,将数据的副本绑定到handsontable,这样handsontable改变数据的时候,不会影响到数据源,只会影响到副本
                var dataCopy=JSON.parse(JSON.stringify(objectData));
    
                var hot = new Handsontable(container, {
                    //调用handsometable的绑定数据的方式是: hot.getData()
                    data: dataCopy,
                    //定义数据源为空时,handsontable的数据格式
                    dataSchema: {
                        id: null,
                        name: null,
                        address: null,
                        content: null
                    },
                    colWidths: 300, //列宽
                    rowHeights: 83, //行高
                    //通过定义width和height来决定容器的宽和高,当内容超出时,便会显示滚动条
                    height: 450,
                     '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

  • 相关阅读:
    iOS小技巧总结,绝对有你想要的
    Myeclipse for Mac快捷键
    iOS开发如何学习前端
    iOS应用支持IPV6,就那点事儿
    App Store审核被拒的23个理由
    43个优秀的Swift开源项目
    ExtJs组件之间的相互访问,访问机制
    hibernate or连接查询内容/criteria动态或连接查询/disjunction/其他查询条件
    hibernate如何解除关系———只删除多方保留一方
    java如何操作视图
  • 原文地址:https://www.cnblogs.com/lkc9/p/10830067.html
Copyright © 2011-2022 走看看