Handsonetable - 无法隐藏列

时间:2015-08-11 11:21:19

标签: javascript html css handsontable

我试图隐藏几个colums。这是我的代码:

function setTable(options){

    var data = options.data;
    var container = options.container;
    var dataSchema = options.dataSchema;
    var colHeaders = options.colHeaders;
    var columns = options.columns;

    var table = new Handsontable(container, {
        data: data,
        disableVisualSelection:true,
        dataSchema: dataSchema,
        colHeaders:colHeaders,
        columns:columns,
        currentRowClassName: 'selected',
        columnSorting:true,
        columnStreching:true,
        autoColumnSize: true,
        stretchH: 'all',
        outsideClickDeselects: false 

    });
    Handsontable.hooks.add('afterSelectionEnd', function(e){
        var data = this.getDataAtRow(e);
        moveToAlert({
            n:data[1],
            v:data[4],
            lt:data[7],
            ln:data[8]
        });
    }, table);
    Handsontable.hooks.add('afterOnCellMouseOver', function(e,c){
        var data = this.getDataAtRow(c.row);
        if(data[0] == null) return false;
        moveToAlert({
            n:data[1],
            v:data[4],
            lt:data[7],
            ln:data[8]
        })
    }, table);

    return table;
}

actualData.push(
{
    reg:d.r, 
    name:d.n, 
    fd:d.fd, 
    td:d.td, 
    v:d.v, 
    rgps:d.rg, 
    loc:"PL, Wrocław, Autostradowa Obwodnica Wrocławia",
    lt:d.lt,
    ln:d.ln,
    c:'a_'+d.c
}
);   
}

if (TABLE_ACTUAL) TABLE_ACTUAL.destroy();
TABLE_ACTUAL = setTable({
  data:actualData,
  container:document.getElementById('actual-table'),
  dataSchema:{reg: null, name: null, fd: null, td: null, v: null, rgps: null, loc: null, lt:null, ln:null,c:null},
  colHeaders:["Pojazd", "Nazwa", "Od", "Do", "Wartość", "Droga", "Lokalizacja"],
  columns:[
    {
        data:"reg",
        editor:false,
    },
    {
        data:"name",
        editor:false,
    },
    {
        data:"fd",
        editor:false,
    },
    {
        data:"td",
        editor:false,
    },
    {
        data:"v",
        editor:false,
    },
    {
        data:"rgps",
        editor:false,
    },
    {
        data:"loc",
        editor:false,
    }
],
});

所以我想隐藏3个最后一列(lt,ln,c),并且还禁用所有列的编辑器。为什么这种方式不起作用?我不想使用customrender因为我认为这是不必要的。

修改 已解决(感谢@ZekeDroid)

我使用了getSourceDataAtRow()而不是getDataAtRow()。 还使用了对已排序表的修复:http://docs.handsontable.com/0.16.1/demo-sorting-data.html,更具体地说:physicalIndex = instance.sortIndex[logicalIndex][0];作为所选行的索引。

1 个答案:

答案 0 :(得分:1)

这可能是由dataSchema选项引起的。您包括要在那里显示的列,即使为null。请尝试完全删除dataSchema选项。但请提供一个小提琴,以便我们可以更加确定。