zoukankan      html  css  js  c++  java
  • handsontable学习(3)——数据源

    前言:handsometable可以有多种数据源,例如:数组,对象等

    一、数组作为数据源:

                var data = [
                        ['', 'Tesla', 'Nissan', 'Toyota', 'Honda', 'Mazda', 'Ford'],
                        ['2017', 10, 11, 12, 13, 15, 16],
                        ['2018', 10, 11, 12, 13, 15, 16],
                        ['2019', 10, 11, 12, 13, 15, 16],
                        ['2020', 10, 11, 12, 13, 15, 16],
                        ['2021', 10, 11, 12, 13, 15, 16]
                    ],
                    container1 = document.getElementById('example1');
    
                hot1 = new Handsontable(container1, {
                    data: data,
                    colHeaders: true,
                    minSpareRows: 1,
                    licenseKey: 'non-commercial-and-evaluation'
                });

    结果:

    二、不绑定数组的某一列:

                var hiddenData = [
                        ['', 'Tesla', 'Nissan', 'Toyota', 'Honda', 'Mazda', 'Ford'],
                        ['2017', 10, 11, 12, 13, 15, 16],
                        ['2018', 10, 11, 12, 13, 15, 16],
                        ['2019', 10, 11, 12, 13, 15, 16],
                        ['2020', 10, 11, 12, 13, 15, 16],
                        ['2021', 10, 11, 12, 13, 15, 16]
                    ],
                    container = document.getElementById('example2');
    
                hot2 = new Handsontable(container, {
                    data: hiddenData,
                    colHeaders: true,
                    minSpareRows: 1,
                    licenseKey: 'non-commercial-and-evaluation',
                    columns: [
                        {data: 0},
                        {data: 2},
                        {data: 3},
                        {data: 4},
                        {data: 5},
                        {data: 6}
                    ]//这里不绑定索引为1的列
                });

    结果:

     

    三、对象作为数据源

                var objectData = [
                    {id: 1,name: 'Ted Right',address: ''},
                    {id: 2,name: 'Frank Honest',address: ''},
                    {id: 3,name: 'Joan Well',address: ''},
                    {id: 4,name: 'Gail Polite',address: ''},
                    {id: 5,name: 'Michael Fair',address: ''},
                ],
                container3 = document.getElementById('example3');
    
                hot3 = new Handsontable(container3, {
                    data: objectData,
                    colHeaders: true,
                    licenseKey: 'non-commercial-and-evaluation',
                    minSpareRows: 1
                });

    结果:

    四、对象作为数据源,并且将列定义为一个函数,这样做的好处是,可以适配数据源结构的多样性

    var nestedObjects = [
                    {id: 1,name: {first: "Ted",last: "Right"},address: ""},
                    {id: 2,address: ""}, // 这一行数据和其它行数据的结构是不一致的
                    {id: 3,name: {first: "Joan",last: "Well"},address: ""}
                    ],
                    container4 = document.getElementById('example4');
    
                hot4 = new Handsontable(container4, {
                    data: nestedObjects,
                    colHeaders: true,
                    columns: function(column) {
                        var columnMeta = {};
    
                        if (column === 0) {
                            columnMeta.data = 'id';
    
                        } else if (column === 1) {
                            columnMeta.data = 'name.first';
    
                        } else if (column === 2) {
                            columnMeta.data = 'name.last';
    
                        } else if (column === 3) {
                            columnMeta.data = 'address';
    
                        } else {
                            columnMeta = null;
    
                        }
    
                        return columnMeta;
                    },
                    minSpareRows: 1,
                    licenseKey: 'non-commercial-and-evaluation'
                });

    结果:

    五、对象作为数据源,直接映射列和数据源的关系

                var nestedObjects = [
                        {id: 1,name: {first: "Ted",last: "Right"},address: ""},
                        {id: 2,address: ""}, 
                        {id: 3,name: {first: "Joan",last: "Well"},address: ""}
                    ],
                    container5 = document.getElementById('example5');
    
                hot5 = new Handsontable(container5, {
                    data: nestedObjects,
                    colHeaders: true,
                    columns: [
                        {data: 'id'},
                        {data: 'name.first'},
                        {data: 'name.last'},
                        {data: 'address'}
                    ],
                    minSpareRows: 1,
                    licenseKey: 'non-commercial-and-evaluation'
                });

    结果:

    六、自定义数据源格式

    当至少有一条数据存在的时候,handsontable会自动在添加新行时,根据旧的数据结构创建新的行。单数如果需要从空的数据源开始,则需要提供给handsontable一个dataSchema告诉handsometable创建新行的时候应该用什么样的数据格式:

                var container = document.getElementById('example1');
    
                hot6 = new Handsontable(container, {
                    data: [],
                    dataSchema: {
                        id: null,
                        name: {
                            first: null,
                            last: null
                        },
                        address: null
                    },
                    startRows: 5,
                    startCols: 4,
                    colHeaders: ['ID', 'First Name', 'Last Name', 'Address'],
                    columns: [
                        {data: 'id'},
                        {data: 'name.first'},
                        {data: 'name.last'},
                        {data: 'address'}
                    ],
                    minSpareRows: 1,
                    licenseKey: 'non-commercial-and-evaluation'
                });

    结果:

  • 相关阅读:
    stm32keilIDE遇到的bug
    linux输入子系统
    按键消抖
    字符驱动程序之——同步互斥阻塞
    字符驱动程序之——异步通知
    字符驱动程序之——poll机制
    第一个驱动之字符设备驱动(四)按键中断
    第一个驱动之字符设备驱动(三)按键查询
    第一个驱动之字符设备驱动(二)mdev
    三者互ping,PC,虚拟机,uboot,nfs网络文件系统搭建
  • 原文地址:https://www.cnblogs.com/lkc9/p/10826010.html
Copyright © 2011-2022 走看看