我使用handontable作为或多或少的gui用于使用lokijs的单独后端数据存储区。我的lokijs数据存储区有行,列,基准和一些元数据。
用户可以采取一些调整db并重新加载页面的操作。我有一个函数将lokijs存储转换为2d数组,并在其上调用loadData,刷新用户看到的页面。
问题:用户可以将单元格标记为“无效”,这会将单元格变为红色,并使用' invalid = true'更新lokijs数据库。布尔值。用户还可以隐藏列。在后端,通过创建一个排除所选列的新二维数组并调用loaddata来刷新handontable。
但是,隐藏单元格不会对列颜色起到很好的作用。我对单元格进行着色的方式如下:
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,但它似乎只处理非动态大小的表。
非常感谢任何建议!