你可以在一个固定的持续时间内突出显示Handsontable表格单元格的值吗?

时间:2015-07-27 17:15:05

标签: handsontable

我有一个Handsontable,我以编程方式对其进行了更改。是否可以突出显示固定时间段内已更改的单元格?

编辑:例如对于数字字段,我希望能够突出显示绿色的单元格,如果新值高于旧值,红色表示相反的情况。然后在短时间后让突出显示消失。

2 个答案:

答案 0 :(得分:1)

您似乎想要做的是向您的单元格添加customRenderer并对其进行一些自定义验证。我建议您阅读这两个主题,因为文档中有大量信息可以帮助您了解如何进行红色/绿色渲染。对于定时方面,这是一个简单的JS逻辑,可以如下:

实际上,你不应该同时拥有成千上万的这些,但即便如此,这个解决方案应该在效率方面正常工作。我们要做的是创建一个地图来存储经过验证的单元格。渲染时,仅当单元格位于地图中时,才会检查此地图和颜色。我们将使用mpusarla的答案来实现部分行为。

<强>逻辑

var validatedCells = {}定义为已验证单元格的地图,其中坐标为键,颜色为值。

首先创建验证回调。在此处,请务必在必要时添加/删除validatedCells中的单元格。现在,您的自定义渲染器应该使用此贴图为绿色/红色着色,具体取决于验证的值。它会是这样的:

var possibleColor = validatedCells[[row,col]];
if (possibleColor) {
    td.style['background-color'] = possibleColor;
}

这足以仅进行着色。现在,对于超时,您应该在验证器在validatedCells中设置单元格之后立即执行,创建超时以在一段时间后删除该值:

validatedCells[[row,col]] = 'green';
setTimeout(function() {
    delete validatedCells[[row,col]];
}, 1000); // deletes it after 1000 millisecs

那应该是它!

答案 1 :(得分:0)

为afterChange实现一个处理程序。在afterChange处理程序中,您将可以访问实例,行号,列号,旧值和新值。

您可以使用以下方法获取单元格元素(td):

var td = $(hotInstance.getCell(row,column,false);

获得td后,您可以尝试使用颜色编码进行setTimeout。