【发布时间】:2015-05-01 20:16:46
【问题描述】:
我有一个要在网格中显示的数据。我正在使用handsontable 来显示数据。每个第 3 列计算为前两列的差异(例如,第 3 列呈现为第 1 列和第 2 列的总和;这是由自定义渲染器完成的,采用 i-1 和 i-2 列的总和)。
这是我的“差异”列的自定义渲染器:
var val1 = instance.getDataAtCell(row, col - 1),
val2 = instance.getDataAtCell(row, col - 2),
args = arguments;
args[5] = val2 - val1;
if (args[5] !== 0) {
$(td).addClass('grid-column-class-nonzero');
}
Handsontable.renderers.NumericRenderer.apply(this, args);
我需要一个“开关”。此开关将显示/隐藏列。如果开关打开,那么我需要显示所有列。如果开关关闭,我只需要显示包含差异的列。 那么,你能建议 - 如何隐藏 hansontable 中的列吗?
编辑:我已按照@ZekeDroid 的建议更新了我的代码。
// on 'switch click' I modify colsToHide global array and do table re-render
$('#my-id').handsontable('render');
这是我的自定义渲染器,用于应基于开关隐藏/显示的列:
var colsToHide = [];
var classModel1Renderer = function (instance, td, row, col, prop, value, cellProperties) {
"use strict";
if (colsToHide.indexOf(col) > -1) {
td.hidden = true;
} else {
td.hidden = false;
}
Handsontable.renderers.TextRenderer.apply(this, arguments);
$(td).addClass('grid-column-class-model1');
};
此代码确实隐藏/显示列,但它不适用于标题列。
【问题讨论】: