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'
                });

    结果:

  • 相关阅读:
    ERP Odoo开发--Getting started with Odoo development --openerp
    5 Tips for Building a Winning DevOps Culture
    android stream media
    LDAP summary-- Python ldap
    android call and audio
    android bluetooth
    .windows安装使用这些偏底层的Python扩展太
    经典的DOS小命令 for 网络 nbtstat
    js和jquery设置disabled属性为true使按钮失效
    Several ports (8005, 8080, 8009)被占用
  • 原文地址:https://www.cnblogs.com/lkc9/p/10826010.html
Copyright © 2011-2022 走看看