我有一个Handsontable,我以编程方式对其进行了更改。是否可以突出显示固定时间段内已更改的单元格?
编辑:例如对于数字字段,我希望能够突出显示绿色的单元格,如果新值高于旧值,红色表示相反的情况。然后在短时间后让突出显示消失。
答案 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。