【发布时间】:2018-06-10 05:57:07
【问题描述】:
我将 handontable 用作使用 lokijs 的单独后端数据存储的或多或少的 gui。我的 lokijs 数据存储有行、列、数据和一些元数据。
用户可以采取一些操作来调整数据库并重新加载页面。我有一个函数可以将 lokijs 存储转换为 2d 数组并在其上调用 loadData,从而刷新用户看到的页面。
问题:用户可以将单元格标记为“无效”,这会将单元格变为红色并使用“无效 = true”布尔值更新 lokijs 数据库。用户还可以隐藏列。在后端,这通过创建一个新的 2d 数组来刷新 handsontable,该数组排除选定的列并调用 loaddata。
但是,隐藏单元格不能很好地处理列颜色。我给单元格上色的方式是这样的:
cells: function (row, col, prop) {
var cellProperties = {};
var cell = cells.findOne({ "col": {"$eq": col}, "row": {"$eq": row}});
if (cell.invalid === true) {
cellProperties.renderer = highlightRowRenderer; //colors red
}
return cellProperties;
您可能会在此处看到问题 - 如果隐藏列,则突出显示时会出现一个错误,因此突出显示时会隐藏另一个单元格。
现在解决此问题的一种方法是加载数据,将突出显示信息作为元数据传递。不幸的是,我无法弄清楚如何做到这一点。我想它看起来像这样:
var data =
[
[ { data: 5, color: red }, { data: 7, color: blue} ],
[ { data: 3, color: green}, { data: 2 } ]
];
hot.loadData(data);
但我不确定它到底是什么。 here 似乎也解决了类似的问题,但它似乎只处理非动态大小的表。
非常感谢任何建议!
【问题讨论】: