Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Handsontable:在运行时更新单元渲染器_Handsontable - Fatal编程技术网

Handsontable:在运行时更新单元渲染器

Handsontable:在运行时更新单元渲染器,handsontable,Handsontable,我使用的是handsontable,如果单元格的值被编辑和更改,我想更改单元格的背景色。如果我的数据源是数组的数组,我可以很容易地做到这一点(请参阅fiddle:) 但是,当使用对象数组时,我无法使其工作。(见小提琴:) 有没有办法做到这一点?我希望使用一个对象数组使其工作,因为来自服务器的数据将采用JSON格式。我花了几天的时间浏览了handsontable文档,结果一无所获。任何帮助都将不胜感激。谢谢。我从手持github论坛得到了一些帮助 显然,如果数据源是一个对象数组,那么在调用“get

我使用的是handsontable,如果单元格的值被编辑和更改,我想更改单元格的背景色。如果我的数据源是数组的数组,我可以很容易地做到这一点(请参阅fiddle:)

但是,当使用对象数组时,我无法使其工作。(见小提琴:)


有没有办法做到这一点?我希望使用一个对象数组使其工作,因为来自服务器的数据将采用JSON格式。我花了几天的时间浏览了handsontable文档,结果一无所获。任何帮助都将不胜感激。谢谢。

我从手持github论坛得到了一些帮助

显然,如果数据源是一个对象数组,那么在调用“getCellMeta”时,您必须将列索引作为如下属性传入,而不是传入数字列索引:

hot.getCellMeta(2, hot.propToCol(columnIndex));

下面是更新后的

更改单元格背景颜色的另一种方法是使用单元格选项

...
if (oldValue != newValue){

    aCell.push(
        { row: rowIndex, 
          col: hot.propToCol(columnIndex), 
          className: "cssWithBackgroundColor" });

    hot.updateSettings({ cell: aCell });
}
如果用户撤消更改,您可以

if ( source == 'UndoRedo.undo'){
    aCell.pop();
    hot.updateSettings({ cell: aCell });
}

非常有趣的问题。您缺少的一点是,您应该在自定义渲染器上返回
td
。很遗憾,不会更改结果。作为一种解决方法,您可以保留所有已更改单元格的映射,并使用通用渲染器检查当前单元格是否在此映射中。如果是,请设置一种颜色,否则使用默认颜色。@ZekeDroid感谢您查看它。我注意到使用{data:“id”}、{data:“title}等会导致从“getCellMeta”返回的cellProperties对象出现问题。当使用如图所示的“data”属性时,cellProperties.renderer是“未定义的”“。这可能是一个可手持的bug。好吧,你应该使用
setCellMetaObject
来设置它,否则它什么都不做。但即使有了那台电视机,有些东西还是不起作用。您可以将其发布在github问题页面上,可能是一个bug
...
if (oldValue != newValue){

    aCell.push(
        { row: rowIndex, 
          col: hot.propToCol(columnIndex), 
          className: "cssWithBackgroundColor" });

    hot.updateSettings({ cell: aCell });
}
if ( source == 'UndoRedo.undo'){
    aCell.pop();
    hot.updateSettings({ cell: aCell });
}