在 pe:sheet 中添加自定义单元格渲染器

Adding custom cell renderers in pe:sheet

我正在尝试为 pe:sheet 组件实现自定义单元格渲染器。

由于这个组件是基于 Handsontable 的,所以我尝试了这里描述的方法: https://handsontable.com/docs/6.2.2/demo-custom-renderers.html

我还更改了注册代码 Handsontable.renderers.registerRenderer('myRenderer', myCustomRenderer); 到 this.cfg.renderers.registerRenderer('myRenderer', myCustomRenderer); 试图访问 pe:sheet.

中的 handsontable 实例

我正在通过 pe:sheet 的扩展程序属性调用我的 sheetExtender。

function sheetExtender() {
//    this.cfg.renderers.registerRenderer('myRenderer', myCustomRenderer);
//    Handsontable.renderers.registerRenderer('myRenderer', myCustomRenderer);    
    console.log(this);
}
var myCustomRenderer = function (instance, td, row, col, prop, value, cellProperties) {
    $(td).empty().append('TEST');
};

将 'myRenderer' 添加到 pe:sheet 列的 colType 属性,我希望列值被 'TEST'.

覆盖

当我使用 'this.cfg...' 时,出现未捕获类型错误:无法读取未定义的 属性 'registerRenderer'。

当我使用 'Handsontable...' 时,我没有收到错误,但也没有结果,因为我猜想,这种方法可能没有将渲染器添加到 handsontable 的实际实例中。

有没有办法在 pe:sheet 中添加自定义单元格渲染器,或者至少制作一个单元格渲染器 HTML?

我是 pe:sheet 的作者。如果您想自定义渲染器,您可以执行以下操作...

这是它在组件中发生的地方:https://github.com/primefaces-extensions/core/blob/master/src/main/resources/META-INF/resources/primefaces-extensions/sheet/1-sheet.js#L59-L116

您可以用自己的覆盖默认 TextCellRenderer

function sheetExtender() {
   this.cfg.textCellRenderer = function (instance, td, row, col, prop, value, cellProperties) {
        Handsontable.renderers.HtmlRenderer.apply(this, arguments);

        // call your custom renderer method here
        myCustomerRenderer(instance, td, row, col, prop, value, cellProperties);
   }    
}