自定义渲染器功能在 Handsontable 插件中不起作用

Posted

技术标签:

【中文标题】自定义渲染器功能在 Handsontable 插件中不起作用【英文标题】:Custom renderer function not working in handsontable plugin 【发布时间】:2013-07-17 06:54:18 【问题描述】:

我有一个函数可以处理一些onChange 事件并且运行良好。该函数调用另一个函数来检查单元格的内容,如果有问题,它应该改变单元格的颜色。

function Check(x, y)

    var content =   $editorTableContainer.handsontable('getDataAtCell', y, x);
    var split   =   content.split(' ');    

    $.each(split, function (key, value) 
        $.get('check.php?word=' + value, function (data) 
            //blank if no error otherwise it returns an array of suggestions (only need to check if there is an error)
            if (data) 
                alert("test");
                var meta = $editorTableContainer.handsontable('getCellMeta', y, x);
                meta.renderer = ErrorRenderer;
            
        );
    );

    return;

这是我的简单 ErrorRenderer:

function ErrorRenderer(instance, td, row, col, prop, value, cellProperties)

  Handsontable.TextCell.renderer.apply(this, arguments);
  console.log(row);
  td.style.fontWeight = 'bold';
  td.style.color = 'green';
  td.style.background = '#CEC';

ErrorRenderer 永远不会被调用,即使触发了警报,知道为什么吗?

谢谢

【问题讨论】:

离题:fwiw,有一个有用的 JS 代码约定只为构造函数保留大写的函数名。 javascript.crockford.com/code.html#names 谢谢。我没有意识到这一点 在下面的答案中查看我关于渲染的评论 【参考方案1】:

如果您使用的是handsontable,为什么不使用它的内置功能?

看看 HT conditional formatting

此外,在 0.9.5 版中添加了一个列选项validator。详情here.

validator (value: Mixed, callback: Function) 

validator : RegExp Object

然后使用事件(详情here):

afterValidate (isValid: Boolean, value: Mixed, row: Number, prop: String, source: String) 

对单元格进行格式化

另外,在您的示例中,您正在设置渲染器,但单元格是否实际被渲染?需要重新渲染吗?

【讨论】:

【参考方案2】:

我可以看到您的渲染器适用于 TextCell.. 它仅适用于文本单元格,检查错误渲染器是否适用于 TextCell 或 NumericCell

【讨论】:

以上是关于自定义渲染器功能在 Handsontable 插件中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Handsontable 中使用自定义渲染器对列进行排序?

自定义单元格渲染器操作未在 handsontable 中触发

handsontable整理

创建handsontable后添加自定义单元格

handsontable:隐藏一些列而不更改数据数组/对象

使用python中的Tornado模块在handsontable中渲染自定义数据